شبيبة تعليمي

شبيبة المنزل مقدمة شبيبة شبيبة إلى أين إخراج JS بيانات شبيبة بناء جملة JS تعليقات JS متغيرات JS JS Let شبيبة كونست مشغلي JS شبيبة الحساب احالة JS أنواع بيانات JS وظائف JS كائنات JS أحداث شبيبة سلاسل شبيبة طرق سلسلة JS بحث سلسلة JS JS String Templates أرقام شبيبة طرق عدد JS صفيفات JS طرق صفيف JS ترتيب صفيف JS تكرار صفيف JS JS Array Const تواريخ شبيبة تنسيقات التاريخ JS طرق الحصول على تاريخ JS طرق تعيين تاريخ JS شبيبة الرياضيات شبيبة عشوائية شبيبة منطقية مقارنات شبيبة شروط JS مفتاح JS JS Loop For JS Loop For In. شبيبة حلقة JS لـ Of شبيبة حلقة بينما شبيبة استراحة شبيبة تكرارات مجموعات JS خرائط شبيبة شبيبة تايبوف JS نوع التحويل شبيبة Bitwise JS RegExp أخطاء JS شبيبة النطاق رفع JS وضع JS الصارم شبيبة هذه الكلمة دالة سهم JS فئات JS شبيبة شبيبة تصحيح أخطاء JS دليل أسلوب JS أفضل ممارسات JS أخطاء JS أداء JS شبيبة الكلمات المحجوزة

إصدارات JS

إصدارات JS JS 2009 (ES5) شبيبة 2015 (ES6) شبيبة 2016 شبيبة 2017 شبيبة 2018 شبيبة آي إي / إيدج تاريخ شبيبة

كائنات JS

تعريفات الكائن خصائص الموضوع طرق الكائن عرض الكائن موصلي الكائنات منشئو الكائنات نماذج الكائن كائن تكرارات مجموعات الكائن خرائط الكائن مرجع الكائن

وظائف JS

تعريفات الوظائف معلمات الوظيفة استدعاء الوظيفة استدعاء الوظيفة تطبيق الوظيفة عمليات إغلاق الوظائف

فئات JS

مقدمة عن الفصل الوراثة الطبقية فئة ثابتة

شبيبة آسينك

عمليات الاسترجاعات JS شبيبة غير متزامن وعود شبيبة شبيبة Async / انتظار

JS HTML DOM

مقدمة DOM طرق DOM مستند DOM عناصر DOM DOM HTML نماذج DOM DOM CSS الرسوم المتحركة DOM أحداث DOM مستمع أحداث DOM التنقل في DOM عقد DOM مجموعات DOM قوائم عقدة DOM

متصفح JS BOM

نافذة JS شاشة JS موقع JS تاريخ شبيبة شبيبة ملاح تنبيه منبثق لـ JS توقيت شبيبة ملفات تعريف الارتباط JS

JS Web APIs

مقدمة واجهة برمجة تطبيقات الويب واجهة برمجة تطبيقات نماذج الويب واجهة برمجة تطبيقات سجل الويب واجهة برمجة تطبيقات تخزين الويب Web Worker API واجهة برمجة تطبيقات جلب الويب واجهة برمجة تطبيقات تحديد الموقع الجغرافي على الويب

شبيبة أجاكس

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

شبيبة شبيبة

مقدمة JSON بناء جملة JSON JSON مقابل XML أنواع بيانات JSON تحليل JSON تنسيق JSON كائنات JSON صفائف JSON خادم JSON JSON PHP JSON HTML جسون جسونب

JS مقابل jQuery

محددات jQuery jQuery HTML jQuery CSS jQuery DOM

شبيبة الرسومات

شبيبة الرسومات قماش شبيبة شبيبة بلوتلي JS Chart.js مخطط جوجل JS شبيبة D3.js

أمثلة JS

أمثلة JS JS HTML DOM إدخال JS HTML كائنات JS HTML أحداث HTML متصفح JS محرر JS تمارين شبيبة شبيبة مسابقة شهادة JS

مراجع JS

كائنات جافا سكريبت كائنات HTML DOM


استخدام جافا سكريبت صارم


"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" إلا في بداية البرنامج النصي أو الوظيفة.