`strict mode` في JavaScript

`strict mode` في JavaScript

توضح هذه المقالة strict mode في JavaScript۔

YouTube Video

strict mode في JavaScript

في JavaScript، يعد strict mode ميزة تم تقديمها في ECMAScript 5 (ES5) لجعل الكود أكثر أمانًا ومنع الأخطاء۔ باستخدام strict mode، يتم تعطيل بعض التركيبات المرنة والميزات التي قد تكون محفوفة بالمخاطر، ويتم فرض فحوصات صارمة للأخطاء۔ يسمح ذلك للمطورين بتجنب السلوك غير المتوقع وكتابة كود أكثر قوة وأداءً عاليًا۔

تفعيل strict mode

لتمكين وضع صارم، أضف التوجيه التالي في بداية الكود الخاص بك۔

1"use strict";

يمكن تطبيق هذا الإعلان على النص بأكمله أو على أساس كل وظيفة۔ على سبيل المثال، إذا تم تطبيقه على البرنامج النصي بالكامل، يمكنك كتابته كما يلي:۔

1"use strict";
2
3function example() {
4    // Strict mode is applied
5}

إذا تم تطبيقه لكل وظيفة، يمكنك كتابته كما يلي:۔

1function example() {
2    "use strict";
3    // Strict mode is applied only within this function
4}

strict mode ينطبق على أساس النطاق، لذلك يمكن تفعيله أيضًا داخل وظيفة.۔ أيضًا، نظرًا لأن وضع 'strict mode' مفعّل افتراضيًا في الوحدات (modules)، فلا تحتاج إلى تفعيله أو التصريح به بشكل منفصل داخل الوحدة.۔

الميزات الرئيسية والفروقات لـ strict mode

استخدام strict mode يغير بعض السلوكيات الافتراضية في JavaScript.۔ فيما يلي الأمثلة الرئيسية۔

حظر المتغيرات العالمية الضمنية

في JavaScript العادي، يؤدي إغفال إعلان المتغيرات إلى تعريفها كمتغيرات عامة تلقائيًا، ولكن في strict mode يؤدي ذلك إلى حدوث خطأ.۔

1"use strict";
2
3x = 10;  // Error: x is not defined

يجب دائمًا إعلان المتغيرات باستخدام var أو let أو const۔

قيود على استخدام الكلمات المحجوزة

لا يمكن استخدام الكلمات المحجوزة المستقبلية المحتملة في JavaScript (مثل: implements، interface، package، وما إلى ذلك) كأسماء للمتغيرات أو الوظائف في strict mode

1"use strict";
2
3var package = "strict mode";  // Error: Unexpected strict mode reserved word

تغييرات في سلوك this

في الوضع العادي، تشير الكلمة this داخل الوظيفة إلى الكائن العام (مثل: window في المتصفحات)، لكن في strict mode، تكون this غير معرفة undefined

1"use strict";
2
3function example() {
4    console.log(this);  // undefined
5}
6
7example();

يساعد ذلك في منع الأخطاء الناتجة عن الاستخدام غير الصحيح لـ this۔

حظر حذف الخصائص غير القابلة للحذف

في الوضع العادي، يتم تجاهل محاولة حذف خصائص الكائن غير القابلة للحذف دون وجود خطأ، لكن في strict mode، يؤدي ذلك إلى خطأ.۔

1"use strict";
2
3var obj = Object.freeze({name: "John"});
4delete obj.name;  // Error: Cannot delete property 'name'

حظر تكرار أسماء المعلمات

في الوضع العادي، يُسمح بتعريف المتغيرات أو المعاملات بنفس الاسم عدة مرات، ولكن في strict mode يؤدي ذلك إلى حدوث خطأ.۔

1"use strict";
2
3function example(a, a) {
4    // Error: Duplicate parameter name not allowed in this context
5}

حظر استخدام العبارة with

يمكن أن تقلل عبارة with من وضوح الكود، وهي ممنوعة في strict mode

1"use strict";
2
3with (Math) {
4    // Error: Strict mode code may not include a with statement
5}

مزايا strict mode

strict mode يحسن أمان وكفاءة الكود بعدة طرق.۔

تحسين اكتشاف الأخطاء

في strict mode يتم اكتشاف الأخطاء التي يتم التغاضي عنها في الوضع العادي، مما يتيح للمطورين اكتشاف العيوب المحتملة في وقت مبكر.۔ على سبيل المثال، يمنع إنشاء المتغيرات العامة غير المقصودة وسوء استخدام الكلمات المحجوزة.۔

تحسين الأداء

في strict mode، يمكن لمحركات JavaScript تحسين الكود بشكل أكثر كفاءة.۔ وبالتالي، قد تتحسن سرعة التنفيذ.۔

زيادة أمان الشيفرة

يصبح التعامل مع this أكثر صرامة، مما يمنع الوصول إلى الكائنات العامة غير الضرورية، وبالتالي يعزز أمان الشيفرة.۔ بالإضافة إلى ذلك، فإن التقييد على استخدام الكلمات المحجوزة يمنع التعارضات في المستقبل مع الكلمات المفتاحية.۔

التوافق والاعتبارات

تم تقديم strict mode في ECMAScript 5، وهو غير مدعوم في المتصفحات التي تم إصدارها قبل ذلك.۔ ومع ذلك، فإن تفعيل strict mode يتم تجاهله ببساطة من قبل المتصفحات غير المدعومة دون تعطيل السكربت.۔ لذلك، يمكن استخدامه عادة بشكل آمن.۔

عند إدخال strict mode إلى مشروع كبير قائم بالفعل، يكون الاختبار الشامل أمرًا حيويًا لتجنب الأخطاء غير المتوقعة.۔

الخاتمة

strict mode في JavaScript هو ميزة مفيدة للغاية لتحسين جودة الكود.۔ على وجه الخصوص، بالنسبة للمشاريع واسعة النطاق أو التطوير الجماعي، يُوصى بقوة باستخدام الوضع الصارم لتجنب الأخطاء والمشاكل غير المتوقعة، ولتعزيز قابلية قراءة الشيفرة وسهولة صيانتها.۔

فهم وتطبيق strict mode بشكل صحيح يساعد في تجنب مشاكل JavaScript ويدعم تطويرًا أكثر أمانًا وكفاءة.۔

يمكنك متابعة المقالة أعلاه باستخدام Visual Studio Code على قناتنا على YouTube.۔ يرجى التحقق من القناة على YouTube أيضًا.۔

YouTube Video