ما هو الهدف من الفراغ المشغل في جافا سكريبت ؟

StackOverflow https://stackoverflow.com/questions/666936

  •  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(); قد سقط من صالح مع معظم الناس الذين يهتمون العلامات. أفضل شيء نفعله هو أن يكون لديك معالج عند النقر عودة كاذبة، ويكون وأشار الرابط نحو صفحة / الموارد التي من المنطقي بالنسبة للأشخاص الذين تم إيقاف جافا سكريبت، أو تستخدم مانع جافا سكريبت مثل نوسكريبت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top