"use strict"; يعرف أن شفرة جافا سكريبت يجب أن يعدم في "وضع صارم".
و "use strict" التوجيه
و "use strict" التوجيه هو جديد في جافا سكريبت 1.8.5 (ECMAScript version 5) .
أنه ليس بيانا، ولكن التعبير الحرفي، وتجاهلها من قبل الإصدارات السابقة من جافا سكريبت.
والغرض من "use strict" هو الإشارة إلى أن رمز يجب أن يعدم في "وضع صارم".
مع الوضع الدقيق للكلمة، لا يمكنك، على سبيل المثال، استخدام المتغيرات غير معلنة.
ويدعم وضع الصارم في:
IE من الإصدار 10. فايرفوكس من الإصدار 4.
Chrome من الإصدار 13. Safari من الإصدار 5.1.
Opera من الإصدار 12.
معلنا الوضع الدقيق
وأعلن وضع الصارم بإضافة "use strict"; إلى بداية برنامج نصي أو وظيفة.
أعلن في بداية السيناريو، فقد النطاق العالمي (كافة التعليمات البرمجية في البرنامج النصي سيتم تنفيذ في وضع صارمة):
مثال
"use strict";
myFunction();
function myFunction() {
y = 3.14;
// This will also cause an error (y is not defined)
}
انها محاولة لنفسك » أعلن في الداخل وظيفة، لديها مجالا المحلي (فقط رمز داخل وظيفة في وضع صارمة):
x = 3.14; // This will not cause an error.
myFunction();
function
myFunction() {
"use strict";
y = 3.14;
// This will cause an error (y is not defined)
}
انها محاولة لنفسك » و "use strict"; بناء الجملة
بناء الجملة، لإعلان وضع صارم، تم تصميمها لتكون متوافقة مع الإصدارات القديمة من جافا سكريبت.
جمع حرفي رقمي (4 + 5؛) أو سلسلة حرفية ("John Doe";) في برنامج جافا سكريبت ليس له آثار جانبية. ببساطة يجمع إلى متغير غير موجود ويموت.
حتى "use strict" . يهم فقط إلى المجمعين جديدة أن "يفهم" معنى ذلك.
لماذا الوضع الدقيق؟
وضع صارم يجعل من السهل لكتابة "تأمين" جافا سكريبت.
يتغير وضع صارمة قبول سابقا "جملة سيئة" إلى الأخطاء الحقيقية.
على سبيل المثال، في جافا سكريبت طبيعي، الخطأ في الكتابة اسم متغير يخلق متغير عالمي جديد. في وضع دقيق، وهذا سوف رمي خطأ، مما يجعل من المستحيل لخلق قصد متغير عمومي.
في جافا سكريبت العادي، وسوف المطور لا تتلقى أي ردود فعل الخطأ تعيين قيم لخصائص غير قابل للكتابة.
في الوضع الدقيق للكلمة، أي الاحالة الى الممتلكات غير قابل للكتابة، وهي خاصية جالبة الوحيد، وهي غير موجودة الملكية، متغير غير موجود، أو كائن غير موجود، ورمي خطأ.
غير مسموح في الوضع الصارم
باستخدام متغير، دون أن تعلن ذلك، لا يسمح:
"use strict";
x = 3.14; // This
will cause an error (x is not defined)
الكائنات هي المتغيرات أيضا.
باستخدام كائن، دون أن تعلن ذلك، لا يسمح:
"use strict";
x =
{p1:10, p2:20}; // This
will cause an error (x is not defined)
حذف متغير (أو كائن) غير مسموح به.
"use strict";
var 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";
var x = 010; // This
will cause an error
لا يسمح للهروب الشخصيات:
"use strict";
var x = \010; // This will cause an error
الكتابة إلى خاصية للقراءة فقط لا يسمح:
"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14; // This
will cause an error
الكتابة إلى خاصية الحصول الوحيد هو عدم السماح لل:
"use strict";
var obj = {get x()
{return 0} };
obj.x = 3.14; // This
will cause an error
حذف خاصية undeletable وهذا غير مسموح به:
"use strict";
delete Object.prototype; // This will cause an error
السلسلة "وحدة التقييم" لا يمكن أن تستخدم متغير:
"use strict";
var eval = 3.14; // This will cause an error
و"الحجج" سلسلة لا يمكن أن تستخدم متغير:
"use strict";
var arguments = 3.14; // This will cause an error
لا يسمح للمع البيان:
"use strict";
with (Math){x = cos(2)}; // This will cause an error
لأسباب أمنية، eval() لا يسمح لإنشاء متغيرات في نطاق من الذي كان يطلق عليه:
"use strict";
eval ("var x = 2");
alert (x); // This
will cause an error
في المكالمات وظيفة مثل f() ، وكانت هذه القيمة الكائن العالمي. في وضع دقيق، وغير معروف الآن ذلك.
برهان المستقبل!
لا يسمح للكلمات محفوظة في المستقبل في وضع دقيق. هؤلاء هم:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict";
var public = 1500; // This will cause an error
احترس!
احترس!
و "use strict" غير المعترف بها التوجيه فقط في بداية برنامج نصي أو وظيفة.