٪۴۰ تخفیف تابستانه شروع شد! بزرگترین حراج سال ما

به ما بپیوندید

آموزش استفاده دقیق از جاوا اسکریپت

"use strict"; تعریف می کند که کد JavaScript باید در “حالت سخت” اجرا شود. دستورالعمل “استفاده دقیق” این "use strict"دستورالعمل در نسخه 5 ECMAScript جدید بود. این یک عبارت نیست ، بلکه یک عبارت تحت اللفظی است که توسط نسخه های قبلی…

محمد یوسفی

23 جولای 2021

"use strict"; تعریف می کند که کد JavaScript باید در “حالت سخت” اجرا شود.


دستورالعمل “استفاده دقیق”

این "use strict"دستورالعمل در نسخه 5 ECMAScript جدید بود.

این یک عبارت نیست ، بلکه یک عبارت تحت اللفظی است که توسط نسخه های قبلی JavaScript نادیده گرفته می شود.

هدف این "use strict"است که نشان دهد کد باید در “حالت سخت” اجرا شود.

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

همه مرورگرهای مدرن از “استفاده دقیق” به جز Internet Explorer 9 و پایین تر پشتیبانی می کنند:

اعداد موجود در جدول اولین نسخه مرورگر را مشخص می کنند که به طور کامل از دستورالعمل پشتیبانی می کند.

شما می توانید از حالت سختگیرانه در تمام برنامه های خود استفاده کنید. به شما کمک می کند تا کد پاک تری بنویسید ، مانند اینکه از استفاده از متغیرهای اعلام نشده جلوگیری می کند.

"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";فقط برای کامپایلرهای جدید اهمیت دارد که معنی آن را “درک” می کنند.


چرا حالت دقیق؟

حالت دقیق نوشتن جاوا اسکریپت “امن” را آسان می کند.

حالت سخت “نحو بد” قبلاً پذیرفته شده را به خطاهای واقعی تغییر می دهد.

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

در جاوا اسکریپت معمولی ، یک توسعه دهنده هیچگونه بازخورد خطایی در اختصاص مقادیر به خصوصیات غیرقابل نوشتن دریافت نمی کند.

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


در حالت سخت مجاز نیست

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

"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و توابع در حالت عادی ، شی global جهانی (پنجره) را برمی گردانند:

"use strict";
function myFunction() {
  alert(this); // will alert "undefined"
}
myFunction();

اثبات آینده!

کلمات کلیدی اختصاص داده شده برای نسخه های بعدی JavaScript نمی توانند به عنوان نام های متغیر در حالت دقیق استفاده شوند.

اینها هستند:

  • اجرا می کند
  • رابط
  • اجازه دهید
  • بسته بندی
  • خصوصی
  • حفاظت شده
  • عمومی
  • ساکن
  • بازده
"use strict";
let public = 1500;      // This will cause an error

مواظب باش!

دستورالعمل “استفاده دقیق” فقط در ابتدای اسکریپت یا یک تابع شناخته می شود.

منبع

مطالب مرتبط

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest
0 نظرات
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها