التوثيق
/
تشويش VM
/

التوافق مع الوضع الصارم

التوافق مع الوضع الصارم

مهم

يحتاج تشويش VM إلى معرفة ما إذا كان الكود يعمل في الوضع الصارم وقت الترجمة. فإذا كان كودك يعتمد على سلوك الوضع الصارم، فعليك التصريح بذلك صراحةً.

لماذا؟ تترجم الآلة الافتراضية كودك إلى بايت كود قبل التنفيذ. ولذلك تحتاج إلى معرفة سياق الوضع الصارم أثناء الترجمة كي تولّد بايت كود صحيحًا للسلوكيات الخاصة بالوضع الصارم (مثل ربط this، والمعاملات المكررة، وسلوك الكائن arguments).

يتحكم الخيار strictMode في طريقة اتخاذ المشوِّش لهذا القرار. فمع strictMode: null (الافتراضي) وstrictMode: false، يُعامَل الكود على أنه صارم فقط حيث يصرّح بذلك: عبر توجيه 'use strict'; صريح، أو صيغة وحدات ES، أو توابع الأصناف. وكل ما عدا ذلك يُترجم في الوضع غير الصارم. أما strictMode: true فيعامل كل المُدخلات على أنها صارمة. طابِق السياق الذي تعمل فيه الحزمة النهائية فعلًا.

الوضع الصارم على مستوى الملف

أضف 'use strict'; في أعلى ملفك لتفعيل الوضع الصارم لكل الكود:

JavaScript

الوضع الصارم على مستوى الدالة

أضف 'use strict'; داخل دوال بعينها إذا كانت بعض الدوال فقط تحتاج إلى الوضع الصارم:

JavaScript

مشكلة شائعة: إذا كانت أداة التجميع أو أداة البناء لديك تضيف 'use strict'; تلقائيًا (كأداة تجميع تغلّف مصادر CommonJS أو السكربتات العادية في ناتج بالوضع الصارم)، بينما تشوّش الكود المصدري قبل التجميع، فلن تعلم الآلة الافتراضية بالوضع الصارم. فإما أن تضيف التوجيه إلى ملفاتك المصدرية، أو تضبط strictMode: true، أو تشوّش بعد التجميع.