استخدام جافا سكريبت صارم
"use strict";
يحدد وجوب تنفيذ تعليمات JavaScript البرمجية في "الوضع المتشدد".
توجيه "الاستخدام الصارم"
كان "use strict"
التوجيه جديدًا في ECMAScript الإصدار 5.
إنه ليس بيانًا ، ولكنه تعبير حرفي ، تم تجاهله من قبل الإصدارات السابقة من JavaScript.
والغرض من "use strict"
ذلك هو الإشارة إلى وجوب تنفيذ التعليمات البرمجية في "الوضع المتشدد".
باستخدام الوضع المتشدد ، لا يمكنك ، على سبيل المثال ، استخدام متغيرات غير معرّفة.
تدعم جميع المتصفحات الحديثة "استخدام صارم" باستثناء Internet Explorer 9 والإصدارات الأقل:
Directive | |||||
---|---|---|---|---|---|
"use strict" | 13.0 | 10.0 | 4.0 | 6.0 | 12.1 |
تحدد الأرقام الواردة في الجدول إصدار المستعرض الأول الذي يدعم التوجيه بالكامل.
يمكنك استخدام الوضع المتشدد في جميع برامجك. يساعدك على كتابة كود أنظف ، مثل منعك من استخدام متغيرات غير معرّفة.
"use strict"
هي مجرد سلسلة ، لذا لن يتسبب IE 9 في حدوث خطأ حتى لو لم يفهمها.
إعلان الوضع الصارم
تم التصريح عن الوضع المتشدد عن طريق إضافة "استخدام صارم" ؛ إلى بداية نص أو وظيفة.
تم الإعلان عنه في بداية البرنامج النصي ، وله نطاق عام (سيتم تنفيذ جميع التعليمات البرمجية في البرنامج النصي في الوضع المتشدد):
مثال
"use strict";
x = 3.14; // This will cause an error
because x is not declared
مثال
"use strict";
myFunction();
function myFunction() {
y = 3.14; // This will also cause an error
because y is not declared
}
معلنة داخل دالة ، لها نطاق محلي (فقط الكود الموجود داخل الوظيفة في الوضع الصارم):
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14; // This will cause an error
}
"استخدام صارم" ؛ بناء الجملة
تم تصميم بناء الجملة ، للإعلان عن الوضع المتشدد ، ليكون متوافقًا مع الإصدارات القديمة من JavaScript.
ترجمة حرفية رقمية (4 + 5 ؛) أو سلسلة حرفية ("John Doe" ؛) في برنامج JavaScript ليس له أي آثار جانبية. إنه ببساطة يتحول إلى متغير غير موجود ويموت.
لذلك "use strict";
لا يهم المترجمون الجدد الذين "يفهمون" معنى ذلك سوى المترجمين الجدد.
لماذا الوضع الصارم؟
يسهّل الوضع الصارم كتابة JavaScript "آمن".
تغييرات الوضع الصارم التي تم قبولها سابقًا "بناء جملة سيء" وتحويلها إلى أخطاء حقيقية.
كمثال ، في JavaScript العادي ، يؤدي الخطأ في كتابة اسم متغير إلى إنشاء متغير عام جديد. في الوضع المتشدد ، سيؤدي ذلك إلى حدوث خطأ ، مما يجعل من المستحيل إنشاء متغير عام بطريق الخطأ.
في JavaScript العادي ، لن يتلقى المطور أي ملاحظات خطأ بتعيين قيم لخصائص غير قابلة للكتابة.
في الوضع المتشدد ، فإن أي تعيين لخاصية غير قابلة للكتابة ، أو خاصية getter فقط ، أو خاصية غير موجودة ، أو متغير غير موجود ، أو كائن غير موجود ، سوف ينتج عنه خطأ.
غير مسموح به في الوضع الصارم
استخدام متغير دون التصريح عنه ممنوع:
"use strict";
x = 3.14; // This will cause an error
الكائنات هي متغيرات أيضًا.
لا يجوز استخدام كائن دون التصريح عنه:
"use strict";
x = {p1:10, p2:20}; // This will cause an error
حذف متغير (أو كائن) غير مسموح به.
"use strict";
let x = 3.14;
delete x; // This
will cause an error
حذف وظيفة غير مسموح به.
"use strict";
function x(p1, p2) {};
delete x;
// This will cause an error
لا يُسمح بتكرار اسم المعلمة:
"use strict";
function x(p1, p1) {}; // This will cause an error
غير مسموح باستخدام القيم الحرفية الرقمية الثمانية:
"use strict";
let x = 010; // This
will cause an error
أحرف الهروب أوكتال غير مسموح بها:
"use strict";
let x = "\010"; // This will cause an error
غير مسموح بالكتابة في خاصية القراءة فقط:
"use strict";
const obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
لا يُسمح بالكتابة في خاصية الحصول فقط:
"use strict";
const obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
غير مسموح بحذف خاصية غير قابلة للحذف:
"use strict";
delete Object.prototype; // This will cause an error
لا يمكن استخدام الكلمة eval
كمتغير:
"use strict";
let eval = 3.14; // This will cause an error
لا يمكن استخدام الكلمة arguments
كمتغير:
"use strict";
let arguments = 3.14; // This will cause an error
البيان غير with
مسموح به:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
لأسباب أمنية ، eval()
لا يسمح بإنشاء متغيرات في النطاق الذي سميت منه:
"use strict";
eval ("let x = 2");
alert (x); // This
will cause an error
this
تتصرف الكلمة الأساسية في الوظائف بشكل مختلف في الوضع المتشدد .
تشير this
الكلمة الأساسية إلى الكائن الذي يسمى الوظيفة.
إذا لم يتم تحديد الكائن ، فستعود الوظائف في الوضع المتشدد وستقوم undefined
الوظائف في الوضع العادي بإرجاع الكائن العام (نافذة):
"use strict";
function myFunction() {
alert(this); // will alert "undefined"
}
myFunction();
برهان المستقبل!
لا يمكن استخدام الكلمات الرئيسية المحجوزة لإصدارات JavaScript المستقبلية كأسماء متغيرات في الوضع المتشدد.
هؤلاء هم:
- الأدوات
- واجهه المستخدم
- يترك
- حزمة
- نشر
- محمي
- عام
- ثابتة
- أثمر
"use strict";
let public = 1500; // This will cause an error
احذر!
لا يتم التعرف على التوجيه "use strict" إلا في بداية البرنامج النصي أو الوظيفة.