آموزش جاوا اسکریپت

حالت سختگیرانه جاوا اسکریپت

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

درس امروز آموزش جاوا اسکریپت درمورد حالت سختگیرانه در جاوا اسکریپت است.

حالت سختگیرانه یا Strict mode حالتی است که به برنامه نویس اجازه نمی دهد از برخی ویژگی های زبان جاوا اسکریپت که باعث بهم ریختگی کد و بروز خطای منطقی در اجرای کد می شود، استفاده کند. در ادامه به معرفی این ویژگی ها و نحوه استفاده از حالت Strict mode می پردازیم.

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


دستورالعمل “حالت سختگیرانه”

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

عبارت "use strict"; یک دستور نیست ، بلکه یک عبارت متنی ثابت است ، که در نسخه های قبلی جاوااسکریپت نادیده گرفته شده است.

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

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

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

دستورالعملگوگل کروماینترنت
اکسپلورر
فایرفاکسسافاریاُپرا
“use strict”13.010.04.06.012.1

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

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

"use strict" فقط یک رشته است ، بنابراین اینترنت اکسپلورر 9 حتی اگر این مسئله را نفهمد ، خطایی نمی دهد.


اعلام حالت سخت

حالت سختگیرانه با اضافه کردن “use strict” به ابتدای یک اسکریپت یا یک تابع اعلام می شود .

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

مثال

خودتان آزمایش کنید

مثال

خودتان آزمایش کنید

اگر حالت سختگیرانه در ابتدای یک تابع اعلام شود، دامنه محلی دارد (فقط کدهای درون تابع در حالت سختگیرانه اجرا می شوند):

خودتان آزمایش کنید


سینتکس "use strict";

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

کامپایل یک عبارت عددی مانند (4 + 5;) یا یک رشته ("John Doe";) در یک برنامه جاوااسکریپت هیچ عارضه جانبی ندارد و به سادگی با یک متغیر غیر موجود، کامپایل شده و از بین می رود.

بنابراین "use strict"; فقط برای کامپایلرهای جدید که معنای آن را درک می کنند اهمیت دارد.


چرا حالت سختگیرانه؟

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

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

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

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

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


چه کارهایی در حالت سختگیرانه جاوااسکریپت مجاز نیست؟

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

خودتان آزمایش کنید

اشیاء نیز متغیر هستند.

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

خودتان آزمایش کنید

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

خودتان آزمایش کنید

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

خودتان آزمایش کنید

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

خودتان آزمایش کنید

استفاده از اعداد مبنای 8 مجاز نیستند:

خودتان آزمایش کنید

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

خودتان آزمایش کنید

نوشتن روی یک ویژگی فقط خواندنی مجاز نیست:

خودتان آزمایش کنید

نوشتن در یک ویژگی فقط دریافتنی مجاز نیست:

خودتان آزمایش کنید

حذف یک خاصیت غیر قابل حذف مجاز نیست:

خودتان آزمایش کنید

کلمه eval به عنوان متغیر قابل استفاده نیست:

خودتان آزمایش کنید

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

خودتان آزمایش کنید

استفاده از عبارت with مجاز نیست:

خودتان آزمایش کنید

به دلایل امنیتی ، eval() اجازه ایجاد متغیرهایی در دامنه ای که از آن فراخوانی شده است، ندارد:

خودتان آزمایش کنید

کلمه کلیدی this در توابع رفتار متفاوتی در حالت سختگیرانه دارد.

کلمه کلیدی this به شی که تابع را فراخوانی کرده، اشاره دارد.

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

خودتان آزمایش کنید


اثبات آینده!

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

کلمات رزرو شده، اینها هستند:

  • implements
  • interface
  • let
  • package
  • private
  • protected
  • public
  • static
  • yield

خودتان آزمایش کنید

مواظب باش!

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


منبع : W3Schools.com


دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *