تشخیص دقیق JavaScript

"use strict"; تعریف می‌کند که کد JavaScript باید به صورت "تشخیص دقیق" اجرا شود.

دستور "use strict"

"use strict" این یک دستور جدید در JavaScript 1.8.5 است (نسخه ECMAScript 5).

این یک دستور نیست، بلکه یک عبارت نوشتاری است و نسخه‌های قدیمی‌تر JavaScript آن را نادیده می‌گیرند.

"use strict"; معنای آن این است که کد JavaScript باید به صورت "تشخیص دقیق" اجرا شود.

در تشخیص دقیق، نمی‌توانید، به عنوان مثال، از متغیرهای اعلام نشده استفاده کنید.

در این نسخه‌های مرورگر، تشخیص دقیق پشتیبانی می‌شود:

  • از نسخه 10 به بعد اینترنت اکسپلورر
  • از نسخه 4 به بعد فایرفاکس
  • از نسخه 13 به بعد کروم
  • از نسخه 5.1 به بعد سافاری
  • از نسخه 12 به بعد اپرا

تشخیص دقیق را اعلام کنید

با افزودن "use strict"; برای اعلام تشخیص دقیق استفاده کنید.

در ابتدای اسکریپت، تشخیص دقیق را اعلام کنید، که دارای حوزه کلی است (تمام کدهای اسکریپت با تشخیص دقیق اجرا می‌شوند):

مثال

"use strict";
x = 3.14;       // این خط باعث بروز خطا می‌شود، زیرا x هنوز اعلام نشده است

خود سنجیدار کریں

مثال

"use strict";
myFunction();
function myFunction() {
     y = 3.14;   // این خط باعث بروز خطا می‌شود، زیرا y هنوز اعلام نشده است
}

خود سنجیدار کریں

در داخل یک تابع، تشخیص دقیق را اعلام کنید، که دارای حوزه محلی است (تنها کدهای داخل تابع با تشخیص دقیق اجرا می‌شوند):

x = 3.14;       // این خط باعث بروز خطا نمی‌شود
myFunction();
function  myFunction() {
	"use strict";
	 y = 3.14;   // این خط باعث بروز خطا می‌شود
}

خود سنجیدار کریں

"use strict"; زبان تشخیص دقیق

زبان تشخیص دقیق به گونه‌ای طراحی شده است که با نسخه‌های قدیمی‌تر JavaScript سازگار باشد.

ملاحظة: جبر JavaScript کا عددی لفظ (مثلاً 4+5) یا سطر لفظی ("Bill Gates") اثر منفی ندارند. آنها تنها به عنوان متغیرهایی که وجود ندارند کامپایل می‌شوند و بعد از آن محو می‌شوند.

همه "use strict"; این تنها بر جدیدترین کامپایلرهایی که مفهوم آن را

چرا باید حالت استرینگ کون را استفاده کنیم؟

حالت استرینگ کون به ما کمک می‌کند تا JavaScript

حالت استرینگ کون، "بدی‌های زبان" قبلی را به خطاهای واقعی تبدیل می‌کند.

به عنوان مثال، در JavaScript معمولی، خطاهای املایی در نام‌های متغیر منجر به ایجاد متغیرهای جهانی می‌شود. در حالت استرینگ کون، این عمل منجر به ایجاد خطا خواهد شد و نمی‌توان متغیرهای جهانی تصادفی ایجاد کرد.

در JavaScript معمولی، اگر به ویژگی غیرقابل نوشت نوشت شود، توسعه‌دهنده هیچ خطایی دریافت نخواهد کرد.

در حالت استرینگ کون، نوشتن به ویژگی‌های غیرقابل نوشت، فقط خوانا، ناموجود، یا نوشتن به متغیر یا شیء ناموجود، منجر به ایجاد خطا خواهد شد.

موضوعات ممنوعه در حالت استرینگ کون

استفاده از متغیر بدون اعلام آن، مجاز نیست:

"use strict";
x = 3.14;                // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

شیء نیز یک متغیر است

استفاده از شیء بدون اعلام آن نیز مجاز نیست:

"use strict";
x = {p1:10, p2:20};      // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

حذف متغیر (یا شیء) مجاز نیست:

"use strict";
var x = 3.14;
delete x;                // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

حذف تابع مجاز نیست:

"use strict";
function x(p1, p2) {}; 
delete x;                 // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

نام‌های پارامترهای تکراری مجاز نیستند:

"use strict";
function x(p1, p1) {};   // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

نمط‌های عددی هگزادسیم مجاز نیستند:

"use strict";
var x = 010;             // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

کاراکترهای فرار مجاز نیستند:

"use strict";
var x = \010;            // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

نوشتن به ویژگی‌های فقط خوانا مجاز نیست:

"use strict";
var obj = {};
Object.defineProperty(obj, "x", {value:0, writable:false});
obj.x = 3.14;            // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

نوشتن به ویژگی‌هایی که فقط می‌توانند خوانده شوند، مجاز نیست:

"use strict";
var obj = {get x() {return 0} };
obj.x = 3.14;            // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

حذف ویژگی‌های غیرقابل حذف مجاز نیست:

"use strict";
delete Object.prototype; // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

نمط "eval" نتوانند به عنوان متغیر استفاده شوند:

"use strict";
var eval = 3.14;         // این خطا را ایجاد خواهد کرد

خود سنجیدار کریں

نمط "arguments" نتوانند به عنوان متغیر استفاده شوند:

"use strict";
وار آرگومنٹس = 3.14;    // یہ غلطی پیدا کرے گی

خود سنجیدار کریں

وسیٹ استفادہ نہیں کیا جاسکتا:

"use strict";
وسیٹ (ما�تا) { ایکس = کوس(2)}; // یہ غلطی پیدا کرے گی

خود سنجیدار کریں

سیکورٹی کیلئے، اجازت نہیں دی جائیتی: ایلویل() اس کی کال کئے گئے اسکوپ میں متبادل بنائی جائیگی:

"use strict";
ایلویل ("وار ایکس = 2");
الرٹ (x);               // یہ غلطی پیدا کرے گی

خود سنجیدار کریں

فونکشن کی کال کے طور پر f() میں، 'this' کا مظور عالمی اوبجیکٹ ہوتا ہے۔ استریکٹ مود میں، اب یہ یون ڈیفائنڈ

مستقبل کیلئے تحفظ

استریکٹ مود میں مستقبل کیلئے ریزرو کئے گئے کلیدی الفاظ کا استعمال نہیں کیا جاسکتا، وہیں وہیں:

  • ایمپلی منٹس
  • اینٹر فیس
  • لیٹ
  • پیکج
  • پائیوریٹ
  • پروٹیکتڈ
  • پبلک
  • استیٹک
  • ییلڈ
"use strict";
وار پبلک = 1500;      // یہ غلطی پیدا کرے گی

خود سنجیدار کریں

اخطاری

"use strict" امر صرف اسکریپٹ یا فنکشن میںشروع میںشناخت کیا گیا.