“use strict” در جاوا اسکریپت چیست و چه کاربردی دارد؟

  • آخرین بروزرسانی پرسش در کاپ کد در پنج‌شنبه 02 آوریل 2020

اخیرا کد های جاوا اسکریپتم رو از طریق JSLint اجرا کردم و بهم خطای زیر رو داد:

Problem at line 1 character 1: Missing “use strict” statement.

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

بنابراین، "use strict"; چیه و چه کاربردی داره و آیا همچنان استفاده میشه؟

آیا هیچ کدوم از مرورگر های امروزی پاسخی در واکنش به رشته "use strict"; میدن یا برای استفاده در آینده هاست؟

پرسش امتیازی🔝
تعداد بازدید 1061749
امتیاز 7476👍
رای 7489👍
📅 پرسش در
📅 آخرین ویرایش

برای این پرسش 2 پاسخ وجود دارد

2

این مقاله درباره Strict Mode در جاوا اسکریپت برات جذاب خواهد بود: John Resig - ECMAScript 5 Strict Mode, JSON, and More

بعضی از بخش های جالبش رو نقل قول می کنم:

 

Strict Mode قابلیتی جدید در ECMAScript 5 است که به شما اجازه می دهد یک برنامه یا تابع را در context عملیاتی "strict" قرار بدید. این context اجباری یا strict از به اجرا در آمدن یک سری اقدامات خاص جلوگیری می کند و exception های بیشتری فراخوانی می شود.

و:

Strict Mode به چند طرق کاربردی خواهد بود:

  • جلوی یک سری اشتباهات رایج در کدنویسی را می گیرد و exception می دهد.
  • هنگامی که اقدامات نسبتا "ناایمن" صورت می گیرد از آن جلوگیری می کند یا خطا نشان می دهد. (مثلا اقدام به دسترسی به یک شی global)
  • قابلیت هایی که گمراه کننده است یا توضیحات ضعیفی درباره آن ها ارائه شده را غیرفعال می کند.

همچنین به یاد داشته باش که میتونی "strict mode" رو در سطح کل فایل اعمال کنی.... یا میتونی برای یک تابع خاص در نظر بگیری (همچنان در حال نقل قول از مقاله جان رسیگ هستم:)

// Non-strict code...

(function(){
  "use strict";

  // Define your library strictly...
})();

// Non-strict code... 

که میتونه در مواقعی که کد های جدید و قدیمی رو با هم ترکیب کردی، کاربردی باشه ;-)

بنابراین، اینطوری در نظر می گیرم که این درست مثل "use strict" هست که میتونی در Perl ازش استفاده کنی: با شناسایی چیز های بیشتر و در واقع نگاه جزئی تر که ممکنه برنامه رو با مشکل روبرو کنه، کمک می کنه تا خطا های کمتری داشته باشی.

Strict mode در حال حاضر توسط تمامی مرورگر های اصلی پشتیبانی میشه.

در داخل ماژول های بومی ECMAScript (با دستور های import و export ) و کلاس های ES6 حالت Strict همیشه فعال هست و امکان غیرفعال کردن اون وجود نداره.

امتیاز 4900👍

پاسخ تایید شده
📅 پاسخ در
📅 آخرین ویرایش

این یک قابلیت جدید از ECMAScript 5 هست و جان رسیگ توضیح خوبی دربارش نوشته.

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

"use strict";

گذاشتن این کد در کدت با مرورگر های امروزی مشکلی نداره چرا که فقط یک رشته متنی هست. ممکنه در آینده اگر کدت pragma رو نقض کنه، مشکل ایجاد بشه. برای مثال، اگر در حال حاضر بدون این که foo رو تعریف کنی foo = "bar" رو داشته باشی، کدت به مشکل میخوره... که از نظر من چیز خوبی هست.

امتیاز 1235👍

📅 پاسخ در
📅 آخرین ویرایش
برای دنبال کردن نوشته های کاپ کد به کانال تلگرامی آن (cupcode_ir@) بپیوندید!

دیدگاه خود را بیان کنید

@