زبان جاوااسکریپت همیشه به گونهای طراحی میشود که نسخهی جدید آن با نسخهی قبلی سازگار باشد. زیرا اصلاً منطقی نیست که اسکریپت خاصی قبلاً نوشته شده و درست کار میکرده است، ولی بعد از بهروز رسانی مرورگر از کار بیفتد. آن هم به خاطر تغییرات زبان جاوااسکریپت.
مزیّت این کار خراب نشدن کدهای قدیمی است. ولی عیبی هم دارد. اگر سازندگان جاوااسکریپت اشتباه کنند یا تصمیم نادرستی بگیرند برای همیشه در زبان جاوااسکریپت باقی میماند.
در سال ۲۰۰۹ نسخهی ۵ اکمااسکریپت (ES5) ظهور کرد. در این نسخه امکاناتی به زبان جاوااسکریپت اضافه شد، و بعضی قابلیتهای موجود تغییر پیدا کرد. ولی برای اینکه کدهای قدیمی خراب نشود این تغییرات در حالت عادی اعمال نمیشود. ولی با دستور "use strict"
میتوان فعّالشان کرد.
“use strict”
این دستور مثل یک متن معمولی است و به یکی از این دو شکل نوشته میشود: "use strict"
یا 'use strict'
. اگر چنین عبارتی را در بالای یک فایل اسکریپت بنویسید، در حالت امروزی و مدرن اجرا میشود.
مثلاً:
"use strict";
// حالا این کد در حالت امروزی و مدرن اجرا میشود
...
در آموزشهای بعدی با مفهوم function در جاوااسکریپت آشنا خواهیم شد. فعلاً در همین حد به یاد داشته باشید که در شروع یک function هم میشود دستور "use strict"
را نوشت. در این صورت حالت مدرن فقط برای همان function فعّال میشود.
دستور “use strict” باید بالاتر باشد
حواستان باشد “use strict” باید بالای بقیهی کدها باشد. وگرنه حالت مدرن فعّال نمیشود.
در این مثال حالت مدرن فعّال نمیشود:
alert("قطعهای کد");
// دستور "use strict" نادیده گرفته میشود. چون باید بالاتر از بقیهی کدها باشد
"use strict"
// حالت مدرن فعال نشده است
تنها چیزی که اشکال ندارد بالاتر از "use strict"
باشد، توضیحات است.
راهی برای لغو use strict نیست
متأسفانه دستوری مثل "no use strict"
نداریم که به موتور جاوااسکریپت بگوید به همان حالت قدیمی برگردد.
همین که حالت مدرن فعّال شود، هیچ راه برگشتی نیست.
Console مرورگر
وقتی در سربرگ Console ابزار برنامهنویسی مرورگر اسکریپتی مینویسید، و Enter میزنید تا اجرا شود، حالت مدرن فعّال نیست.
گاهی اوقات اگر در حالت مدرن نباشیم، کار خراب میشود و نتیجهی مورد انتظار را نمیبینیم.
در این جور مواقع میتوانید دستور "use strict"
را بنویسید، بعد Shift+Enter بزنید که به خط بعدی بروید و سپس کدهای دیگر را بنویسید.
'use strict'; <بزنید تا بروید خط بعدی Shift+Enter حالا>
// ...کد شما
<بزنید تا اجرا شود Enter>
در بیشتر مرورگرها از جمله Chrome و Firefox این تکنیک جواب میدهد.
اگر در مرورگری این تکنیک جواب نداد، بهترین راه فعّالسازی حالت مدرن روش زیر است:
(function() {
'use strict';
// ...کد شما...
})()
همیشه "use strict"
را بنویسید
در آموزشهای بعدی بیشتر با تفاوتهای حالت strict نسبت به حالت عادی آشنا خواهیم شد. خوشبختانه این تفاوتها زیاد نیستند.
تا این جا کافیست به صورت کلی بدانید:
- دستور
"use strict"
حالت موتور جاوااسکریپت را به «مدرن» تغییر میدهد و رفتار برخی قابلیّتهای جاوااسکریپت را تغییر میدهد. در آینده در مورد جزئیات آن بیشتر صحبت میکنیم. - دستور
"use strict"
باید بالاتر از بقیهی کدها در فایل جاوااسکریپت یا یک function نوشته شود تا حالت مدرن فعّال شود. البته استفاده از ساختارهای جدید جاوااسکریپت مثل «class» یا «ماژول» نیز باعث فعّال شدن حالت مدرن میشود. - همهی مرورگرهای امروزی از حالت مدرن پشتیبانی میکنند.
- توصیه میکنیم همیشه در شروع فایلهای اسکریپت خود، از
"use strict"
استفاده کنید. از این به بعد در این سلسله آموزشها فرض را بر این میگیریم که در حالت مدرن هستیم، مگر اینکه دقیقاً بگوییم که در حالت مدرن نیستیم.