Use Strict در JavaScript
یادگیری JavaScript"use strict"; تعریف می کند که کد جاوا اسکریپت باید در حالت "strict" اجرا شود
دستورالعمل " use strict"
دستورالعمل " use strict" در نسخه ECMAScript نسخه 5 جدید بود.
این یک بیانیه نیست، بلکه عبارتی است که توسط نسخه های قبلی جاوااسکریپت نادیده گرفته شده است.
هدف " use strict" نشان دهنده آن است که کد باید در حالت " strict" اجرا شود.
با حالت strict ، شما نمیتوانید، به عنوان مثال، از متغیرهای غیرقانونی استفاده کنید.
تمام مرورگرهای مدرن از " use strict" به جز اینترنت اکسپلورر 9 و پایین تر پشتیبانی می کنند:
اعداد در جدول اولین نسخه مرورگر را مشخص می کند که به طور کامل از این دستور پشتیبانی می کند.
شما می توانید از حالت strict در تمام برنامه های خود استفاده کنید. این به شما کمک می کند تا کد پاک کردن را بنویسید، مانند جلوگیری از استفاده از متغیرهای غیرقانونی.
تعریف حالت strict
حالت strict با اضافه کردن "use strict"; اعلام می شود؛ به ابتدای یک اسکریپت یا یک تابع.
در ابتدای اسکریپت اعلام شده، دامنه سراسری دارد (تمام کد در اسکریپت در حالت strict اجرا می شود):
"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
}
مشاهده مثالاگر داخل یک تابع اعلام و تعریف شود ، آن محدوده محلی (تنها کد داخل تابع در حالت strict است):
x = 3.14; // This will not cause an error.
myFunction();
function myFunction() {
"use strict";
y = 3.14; // This will cause an error
}
مشاهده مثالساختار ;"use strict"
نحو، برای اعلام حالت strict ، برای سازگاری با نسخه های قدیمی تر جاوااسکریپت طراحی شده است.
کامپایل یک عدد صحیح (4 + 5؛) یا رشته ای با حروف الفبا ("John Doe";) در یک برنامه جاوااسکریپت عوارض جانبی ندارد. به سادگی به یک متغیر غیر موجود کامال می کند و از بین می رود.
بنابراین " use strict "؛ تنها برای کامپایلرهای جدید مهم است که "درک" معنی آن است.
چرا حالت strict
حالت سخت باعث می شود که جاوا اسکریپت امنی را بنویسید.
حالت strict قبلا "ساختار بد" را به اشتباهات واقعی پذیرفته است.
به عنوان مثال، در یک جاوا اسکریپت معمولی، اشتباه کردن یک نام متغیر یک متغیر سراسری جدید ایجاد می کند. در حالت strict ، این یک خطا را ایجاد می کند و غیرممکن است که به صورت تصادفی یک متغیر سراسری ایجاد شود.
در JavaScript جاوااسکریپت، یک توسعه دهنده بازخورد خطا را برای اختصاص دادن مقادیر به خواص غیر قابل نوشتن دریافت نخواهد کرد.
در حالت سخت، هر تخصیصی به یک ویژگی غیر قابل نوشتن، یک ویژگی دریافت کننده، یک ویژگی غیر موجود، یک متغیر غیر موجود یا یک شیء غیر موجود، یک خطا را در بر می گیرد.
در حالت strict مجاز نیست
استفاده از یک متغیر بدون اعلام آن مجاز نیست:
"use strict";
x = 3.14; // This will cause an error
مشاهده مثالاستفاده از یک شی بدون اعلام آن مجاز نیست:
"use strict";
x = {p1:10, p2:20}; // This will cause an error
مشاهده مثالحذف یک متغیر (یا شیء) مجاز نیست.
"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
مشاهده مثالنوشتن به یک get-only اجازه داده نمی شود:
"use strict";
var 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";
var eval = 3.14; // This will cause an error
مشاهده مثالرشته "arguments" نمیتواند به عنوان یک متغیر استفاده شود:
"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 ()، این مقدار شیء سراسری بود. در حالت strict ، در حال حاضر نامشخص است.
اثبات آینده!
کلمات کلیدی که برای نسخه های جاوااسکریپت آینده نگهداری میشوند نمیتوانند به عنوان نام متغیر در حالت strict استفاده شوند.
اینها هستند:
- implements
- interface
- let
- package
- private
- protected
- public
- static
- yield
"use strict";
var public = 1500; // This will cause an error
مشاهده مثالدستور " use strict" فقط در ابتدای یک اسکریپت یا یک تابع شناسایی می شود.
نظر شما
>