ما هو الهدف من الفراغ المشغل في جافا سكريبت ؟
-
21-08-2019 - |
سؤال
لقد رأيت بعض الناس باستخدام void
مشغل في التعليمات البرمجية الخاصة بهم.لقد رأيت أيضا في هذا href
سمات: javascript:void(0)
التي لا يبدو أفضل من javascript:;
فما هو مبرر استخدام void
المشغل ؟
المحلول
وهذا هو السبب في أن أوامر المفضلة في كثير من الأحيان التفاف رمز داخل الفراغ () أو وظيفة مجهولة المصدر التي لا العودة أي شيء لوقف المتصفح من محاولة لعرض نتيجة تنفيذ بووكمركلت. إلى عن على على سبيل المثال:
javascript:void(window.open("dom_spy.html"))
إذا كنت تستخدم مباشرة التعليمات البرمجية التي يعود شيء (مثيل نافذة جديدة في هذه الحالة)، سيقوم المتصفح في نهاية المطاف عرض ما يلي:
javascript:window.open("dom_spy.html");
في فايرفوكس أعلاه سيتم عرض:
[object Window]
اقتباس فقرة> نصائح أخرى
على undefined
قيمة لا يمكن الوصول إليها مباشرة في جافا سكريبت حتى ES1.3.
المشغل void <expression>
أدرج إلى تصريح إمكانية الوصول إلى هذه القيمة.
ومن المفيد في بعض الأحيان, لا سيما عند العمل مع API ويب (على سبيل المثالمعالجات الأحداث) ، لضمان نتيجة تعبير باستمرار undefined
.
عندما undefined
خاصية تم إضافتها إلى كائن العالمية في ES1.3 فائدة void
أصبحت غير واضحة.
وبالتالي سؤالك.
والنظر في المسائل التالية:
<a href="javascript:void(fish=document.getElementById('foo').value);void(document.getElementById('bar').value=fish);">With Void</a>
<a href="javascript:fish=document.getElementById('foo').value;document.getElementById('bar').value=fish;">Without Void</a>
<input type="text" id="foo" value="one fish" />
<input type="text" id="bar" value="no fish" />
وأول وصلة ومبادلة قيم حقول النص. والوصلة الثانية فتح صفحة جديدة مع النص "الأسماك واحد". إذا كنت تستخدم javascript: link
، لحظة تعبير ترجع شيء آخر غير null
أو undefined
، فإن المتصفح يفسر بأنه ما ينبغي أن تفعله الارتباط. بواسطة التفاف كل التعابير / statments في وظيفة void()
، عليك التأكد من لديك قصاصة كامل من التعليمات البرمجية سيتم تشغيل. في هذه الأيام، وهذا هو في المقام الأول من استخدامها في تطبيقات مختصرة، مثل استخدام سمة onclick
، أو وضع معالجات الأحداث في كتل جافا سكريبت منفصلة / الملفات هي "القاعدة".
وأما بالنسبة javascript:
مقابل javascript:void()
، البيان الأول هو غامض. كنت تقول، "مهلا، أريد أن تشغيل بعض جافا سكريبت"، ولكن بعد ذلك لم تقدم أي رمز. انها ليست واضحة بالضرورة ما المتصفح ينبغي القيام به هنا. مع بيان ثان كنت تقولين "مهلا، تشغيل بعض جافا سكريبت"، والتعليمات البرمجية يعود في نهاية المطاف غير معروف، الذي المتصفح يعرف وسيلة "لا تفعل شيئا".
وبما أنني هنا، أنا سوف نشير أيضا إلى أن استخدام إما javascript:
أو javascript:void();
قد سقط من صالح مع معظم الناس الذين يهتمون العلامات. أفضل شيء نفعله هو أن يكون لديك معالج عند النقر عودة كاذبة، ويكون وأشار الرابط نحو صفحة / الموارد التي من المنطقي بالنسبة للأشخاص الذين تم إيقاف جافا سكريبت، أو تستخدم مانع جافا سكريبت مثل نوسكريبت.