javascript شرح - هل هناك سبب جيد لتمرير سلسلة إلى setTimeout؟




1 Answers

يمكنك دائمًا استخدام المتغيرات العامة عن طريق الوصول إليها window.globalVar لكائن النافذة ، مثل window.globalVar (على الرغم من أن استخدام window.globalVar الواقع ليس ممارسة جيدة) ، لذلك لا ، لا أعتقد أن هناك سببًا جيدًا لاستخدام الإهمال بناء الجملة.

ربما يُسمح به لأسباب تاريخية: كما ذكر فيلكس كلينج ، فإن الصيغة الأصلية لم تسمح إلا بتمرير سلسلة من الشفرات:

المقدمة مع جافا سكريبت 1.0 ، نتسكيب 2.0. تم تقديم مرجع كائن دالة مع JavaScript 1.2 ، Netscape 4.0 ؛ معتمد من قبل MSHTML DOM منذ الإصدار 5.0. [ المصدر ، تشديدي]

إذا كانت المتصفحات لا تدعم استخدام سلسلة كوسيطة أولى ل setTimeout و setInterval بعد الآن ، سيكون هناك الكثير من التعليمات البرمجية على الإنترنت التي لا تعمل بعد الآن.

setinterval clearinterval

نعلم جميعًا أن تمرير سلسلة إلى setTimeout (أو setInterval ) أمر شرير ، لأنه يتم تشغيله في النطاق العالمي ، ولديه مشكلات في الأداء ، ومن المحتمل أن يكون غير آمن إذا كنت تقوم بحقن أي معلمات ، وما إلى ذلك.

setTimeout('doSomething(someVar)', 10000);

لصالح هذا:

setTimeout(function() {
    doSomething(someVar);
}, 10000);

سؤالي هو: هل يمكن أن يكون هناك سبب للقيام بالأمر؟ هل هو الأفضل من أي وقت مضى ؟ إذا لم يكن كذلك ، فلماذا يسمح بذلك؟

السيناريو الوحيد الذي فكرت فيه هو الرغبة في استخدام دالة أو متغير موجود في النطاق العالمي ولكن تم تجاوزه في النطاق المحلي. هذا يبدو لي مثل تصميم رمز الفقراء ، ولكن ...




Related