يستهجن العديد من المطورين ممارسة تمرير السلاسل إلى setTimeout بسبب مخاوف الأداء، والمخاطر الأمنية المحتملة، وإهمالها حالة. ومع ذلك، قد تكون هناك سيناريوهات نادرة حيث يمكن أن يكون بناء الجملة هذا مفيدًا.
يتضمن بناء الجملة التقليدي لـ setTimeout وsetInterval تمرير سلسلة تمثل التعليمات البرمجية المطلوب تنفيذها. على سبيل المثال:
setTimeout('doSomething(someVar)', 10000);
ومع ذلك، تعمل JavaScript الحديثة على تعزيز استخدام مراجع الوظائف بدلاً من ذلك:
setTimeout(function() {
doSomething(someVar);
}, 10000);
ينشأ النقاش عند النظر في ما إذا كانت هناك أي أسباب وجيهة للانحراف عن بناء الجملة الموصى به. قد تكون إحدى الحجج المحتملة هي الرغبة في الوصول إلى وظيفة أو متغير موجود في النطاق العالمي ولكن ربما تم تجاوزه محليًا.
على الرغم من هذا الأساس المنطقي، فإن استخدام السلاسل في setTimeout لا ينصح بشدة. لا يزال من الممكن الوصول إلى المتغيرات العامة من خلال خصائص كائن النافذة. على سبيل المثال:
setTimeout(window.doSomething(someVar), 10000);
من المحتمل السماح للسلاسل كوسيطات لـ setTimeout وsetInterval متجذرة في العوامل التاريخية. الإصدارات المبكرة من JavaScript كانت تدعم السلاسل فقط. كانت إضافة القدرة على تمرير مراجع الوظائف إضافة لاحقة. لضمان التوافق مع الإصدارات السابقة، لا تزال المتصفحات تسمح ببناء جملة السلسلة، على الرغم من إهمالها.
على الرغم من أنه من الممكن تقنيًا تمرير السلاسل إلى setTimeout في حالات معينة، إلا أن الممارسة بشكل عام ليست كذلك الموصى بها بسبب توافر النهج البديلة. يوفر استخدام مراجع الوظائف أداءً محسنًا ويعزز الأمان ويلتزم بإرشادات التعليمات البرمجية الحديثة. ولذلك، ينبغي تجنب بناء جملة السلسلة المهملة من أجل الوضوح، وقابلية الصيانة، وجودة التعليمات البرمجية الشاملة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3