English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScript基础教程

JavaScript 对象

JavaScript 函数

JS HTML DOM

JS 浏览器BOM

AJAX 基础教程

JavaScript 参考手册

النمط التشدد (use strict) في JavaScript

ECMAScript 5中引入的JavaScript严格模式是选择加入 JavaScript受限变体的一种方式。

严格模式不仅仅是一个子集:它有意地具有与普通代码不同的语义。

严格模式使编写“安全” JavaScript更加容易。

严格模式将以前接受的“错误语法”更改为实际错误。

在严格模式下,例如,您不能使用未声明的变量。

调用严格模式

严格模式是通过"use strict";在脚本或函数的开头添加来声明的。

要为整个脚本调用严格模式,在任何其他任何声明之前,输入语句“use strict” ::

"use strict";
str = \
اختبار النظر في‹/›

لإجراء مكالمة وظيفة صارمة، يرجى وضع جملة "use strict"; في جسم الوظيفة، ثم في أي جملة أخرى قبل ذلك:

function myFunc() {
  // جملة وضوح مستوى الوظيفة الشديد
  "use strict";
  str = "大家好,我是严格模式函数!"; // سيؤدي إلى خطأ
  return str;
}
اختبار النظر في‹/›

يمكن أن يساعد الوضع الصارم في كتابة أكواد أكثر نظافة، مثل منع استخدام المتغيرات غير المعلنة.

يمكن التعرف على أوامر "use strict" فقط في بداية البرنامج أو الوظيفة.

كلا الجملين باستخدام الأسهم والنواقص قابلاً للقبول ('use strict'; أو "use strict";).

محدوديات الشديد الشدة الشائعة

كما تعلمون، في الوضع الصارم، يجب أن يتم إعلان جميع المتغيرات.

إذا قمت بتعيين قيمة لمعرف ليس متغيرًا معلنًا، فإن ذلك سيؤدي إلى إطلاق ReferenceError:

"use strict";
x = 5; // ReferenceError: x لم يتم تعريفها
اختبار النظر في‹/›

لا يُسمح باستخدام العناصر غير المعلنة (العناصر هي متغيرات أيضًا):

"use strict";
coord = {x: 10, y: 20}; // ReferenceError: coord لم يتم تعريفها
اختبار النظر في‹/›

في الوضع الصارم، إذا حاولت حذف متغير، فسيتم إطلاق خطأ في النص:

"use strict";
var msg = "Hello World";
delete msg; // SyntaxError
اختبار النظر في‹/›

بالمثل، عند محاولة حذف وظيفة في الوضع الصارم، سيظهر خطأ في النص:

"use strict";
function sum(a, b) {
return a + b;
}
delete sum; // SyntaxError
اختبار النظر في‹/›

في الوضع الصارم، لا يُسمح بإعادة استخدام اسم المعامل:

"use strict";
function square(a, a) { // SyntaxError
return a * a;
}
اختبار النظر في‹/›

في الوضع الصارم، لا يُسمح بإدخال الخاصية القابلة للقراءة فقط:

"use strict";
var person = {name: "Akash", age: 22};
Object.defineProperty(person, "gender", {value: "male", writable: false});
person.gender = "female"; // TypeError
اختبار النظر في‹/›

في الوضع الصارم، لا يُسمح باستخدام جملة with:

"use strict";
with (Math) { x = sqrt(25); }; // SyntaxError
اختبار النظر في‹/›

في الوضع الصارم، لا يُسمح باستخدام الأرقام الثمانية:

"use strict";
var x = 010; // SyntaxError
اختبار النظر في‹/›

لأسباب أمنية،eval()لا يُسمح بإنشاء متغيرات في نطاق الدعوة الخاصة بها:

"use strict";
eval("var x = 10;");
console.log(x); // ReferenceError: x variable is not defined
اختبار النظر في‹/›

لا يمكن استخدام كلمة "eval" كمعرف (اسم متغير):

"use strict";
var eval = "oldtoolbag.com";// SyntaxError
اختبار النظر في‹/›

لا يمكن استخدام كلمة "arguments" كمعرف (اسم متغير):

"use strict";
var arguments = "oldtoolbag.com";// SyntaxError
اختبار النظر في‹/›

لتحضير الطريق لإصدارات ECMAScript المستقبلية

قد تقوم إصدارات ECMAScript المستقبلية بإدخال لغات جديدة، حيث يتم تطبيق الوضع الصارم في ES5 لتطبيق بعض القيود لتسهيل الانتقال.

من المرجح أن تكون التغييرات بعضها البعض أسهل إذا تم منع هذه التغييرات الأساسية في الوضع الصارم.

في الوضع الصارم، قائمة المعرفات التالية تصبح كلمات مفتاحية محفوظة:

  • implements

  • interface

  • let

  • package

  • private

  • protected

  • public

  • static

  • yield

"use strict";
var package = true; // This will cause an error
اختبار النظر في‹/›