021-28423015

Use Strict در JavaScript

"use strict"; تعریف می کند که کد جاوا اسکریپت باید در حالت "strict" اجرا شود

دستورالعمل " use strict"

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

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

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

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

تمام مرورگرهای مدرن از " use strict" به جز اینترنت اکسپلورر 9 و پایین تر پشتیبانی می کنند:

Directive
"use strict"
13.0
10.0
4.0
6.0
12.1

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

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

تعریف حالت strict

حالت strict با اضافه کردن "use strict"; اعلام می شود؛ به ابتدای یک اسکریپت یا یک تابع.

در ابتدای اسکریپت اعلام شده، دامنه سراسری دارد (تمام کد در اسکریپت در حالت strict اجرا می شود):

تعریف use strict
"use strict";
x = 3.14;       // This will cause an error because x is not declared
مشاهده مثال

تعریف use strict
"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 اجازه داده نمی شود:

نوشتن به یک 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" نمی تواند به عنوان یک متغیر استفاده شود.

رشته eval
 "use strict";
var eval = 3.14;         // This will cause an error 
مشاهده مثال

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

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 () مجاز به ایجاد متغیرهایی در محدوده ای از آن شده است:

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" فقط در ابتدای یک اسکریپت یا یک تابع شناسایی می شود.


نظر شما

لطفا نام و نام خانوادگی خود را وارد کنید
لطفا ایمیل خود را وارد کنید لطفا ایمیل صحیح وارد کنید.
لطفا متن نظر خود را وارد کنید
>

یادگیری JavaScript

مقالات و دروس

عضویت در خبرنامه شرکت نرم افزاری وب مهراز

برای اطلاع از بسته ها ، تخفیف های استثنایی و تازه های ما به خبرنامه وب مهراز بپیوندید.

لطفا شماره همراه صحیح وارد کنید.
لطفا ایمیل صحیح وارد کنید.

مقالات مرتبط