سایت خبرکاو

جستجوگر هوشمند اخبار و مطالب فناوری

حالت سختگیرانه در جاوا اسکریپت چیست؟ با مثال توضیح داده شده است

اگر توسعه‌دهنده جاوا اسکریپت هستید، ممکن است با رشته «استفاده سخت» در بالای کد جاوا اسکریپت خود مواجه شوید. این به این معنی است که حالت سخت جاوا اسکریپت در حال استفاده است. اما این به چه معناست و چرا اهمیت دارد؟ در این مقاله، معنی نوشتن کد جاوا اسکریپت در حالت سخت و نحوه فعال کردن آن را خواهید آموخت. این مقاله همچنین برخی از مزایای استفاده از حالت سخت ...

اگر توسعه‌دهنده جاوا اسکریپت هستید، ممکن است با رشته «استفاده سخت» در بالای کد جاوا اسکریپت خود مواجه شوید. این به این معنی است که حالت سخت جاوا اسکریپت در حال استفاده است. اما این به چه معناست و چرا اهمیت دارد؟

در این مقاله، معنی نوشتن کد جاوا اسکریپت در حالت سخت و نحوه فعال کردن آن را خواهید آموخت. این مقاله همچنین برخی از مزایای استفاده از حالت سخت و چند مثال را پوشش می دهد که تفاوت آن با جاوا اسکریپت معمولی را نشان می دهد.

فهرست مطالب

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

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

تفاوت بین حالت سختگیرانه و جاوا اسکریپت معمولی

ویژگی های جاوا اسکریپت که به صورت پیش فرض از حالت سختگیرانه استفاده می کنند

نتیجه

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

حالت سختگیرانه یک ویژگی در جاوا اسکریپت است که در ECMAScript 5 معرفی شده است. به شما امکان می دهد کد را به گونه ای بنویسید که از قوانین سخت گیرانه پیروی کند.

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

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

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

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

 "use strict" // Your code goes here...

برای توابع، می‌توانید با قرار دادن رشته "use strict" در بالای بدنه تابع، حالت سخت را فعال کنید.

 function myFunction() { "use strict" // Function body goes here... }

شما باید رشته "use strict" را در بالای فایل یا بدنه تابع قرار دهید. در غیر این صورت کار نخواهد کرد.

اما شما مجاز به اضافه کردن نظرات در بالای رشته "use strict" هستید. به غیر از نظرات، هر چیز دیگری باید در زیر "use strict" باشد تا کار کند.

تفاوت بین حالت سختگیرانه و جاوا اسکریپت معمولی

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

استفاده از یک متغیر اعلام نشده

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

در اینجا یک مثال است

 // Regular JavaScript function regularFunc() { username = "Marie" console.log(username) } regularFunc() 
اسکرین شات-2024-02-01-at-8.20.00-AM
JS معمولی هیچ خطایی برای متغیر نام کاربری ایجاد نمی کند.
 // Strict mode function strictFunc() { "use strict" username = "Marie" console.log(username) } strictFunc() 
اسکرین شات-2024-02-02-at-7.07.08-AM
حالت سختگیرانه برای متغیرهای اعلام نشده خطا ایجاد می کند.

در تابع regularFunc ، مرورگر username بدون هیچ خطایی در کنسول ثبت می کند.

اما با تابع strictFunc که از حالت سخت استفاده می کند، یک خطای مرجع ایجاد می کند.

دلیلش این است که متغیر username اعلان نشده است. و حالت سخت اجازه استفاده از متغیرها را قبل از اعلام آنها نمی دهد.

کپی کردن نام پارامتر

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

اما عملکردهای حالت سخت این اجازه را نمی دهد. در موارد تکراری یک خطای نحوی ایجاد می کند.

در اینجا یک مثال است:

 function addNums (num, num) { console.log(num + num) } addNums(2, 3) // 6

در مثال بالا، اولین پارامتر num نادیده گرفته شده است. فقط دومی استفاده می شود. به همین دلیل است که توابع 6 را برمی گرداند زیرا 3 + 3 6 است.

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

به این معنا که:

 function addNums (num, num) { "use strict" console.log(num + num) } addNums(2, 3)
اسکرین شات-2024-02-02-at-9.15.07-AM
مرورگر برای نام پارامتر تکراری خطا می دهد.

استفاده از کلمات کلیدی رزرو شده آینده

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

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

 const package = "This is a package" console.log(package)
اسکرین شات-2024-02-02-at-9.17.36-AM
ثبت نتیجه برای استفاده از کلمه کلیدی رزرو شده در جاوا اسکریپت معمولی.

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

 "use strict" const package = "This is a package" console.log(package)
اسکرین شات-2024-02-02-at-9.22.21-AM
استفاده از یک کلمه کلیدی رزرو شده در حالت سخت منجر به یک خطای نحوی می شود.

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

implements

interface

private

protected

public

static

yield

arguments

استفاده از ویژگی های منسوخ شده

حالت سختگیرانه استفاده از آپشن های منسوخ شده جاوا اسکریپت مانند arguments.caller ، arguments.callee و غیره را محدود می‌کند.

این موارد به دلیل نگرانی‌های امنیتی و عملکرد غیرمجاز هستند. اما حالت غیر دقیق اجازه استفاده از آنها را می دهد.

بیایید نمونه ای از استفاده از arguments.caller را در حالت سخت و غیر دقیق ببینیم.

 // non-strict mode function outerFunction() { innerFunction(); } function innerFunction() { console.log(innerFunction.caller); // Example of .caller } outerFunction();
اسکرین شات-2024-02-02-at-10.18.11-AM
arguments.caller در حالت غیر دقیق و بدون هیچ خطایی کار می کند.

استفاده از .caller در innerFunction ، outerFunction را ثبت می کند که تابع داخلی را به کنسول فراخوانی می کند. در حالت غیر دقیق به خوبی کار می کند.

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

 "use strict" function outerFunction() { innerFunction(); } function innerFunction() { console.log(innerFunction.caller); // Example of .caller } outerFunction();
اسکرین شات-2024-02-02-at-10.23.14-AM
حالت سختگیرانه برای استفاده از آپشن های منسوخ شده، «Uncaught TypeError» ایجاد می‌کند.

واگذاری به یک ویژگی فقط خواندنی

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

 const obj = {} Object.defineProperty(obj, 'key', { value: 10, writable: false }) obj.key = 20 console.log(obj.key)
اسکرین شات-2024-02-02-at-11.23.16-AM
نتیجه ثبت برای object.key

این مثال یک obj خالی جدید را تعریف می کند. و با استفاده از Object.defineProperty ، یک key ویژگی جدید به obj اضافه می شود. این ویژگی key به عنوان یک ویژگی فقط خواندنی تنظیم شده است.

همانطور که از نتیجه log می بینید، هنگام به روز رسانی مقدار key هیچ خطایی وجود ندارد. و ویژگی key مقدار اصلی 10 را حفظ می کند.

با این حال، در حالت سخت، تلاش برای به روز رسانی مقدار ویژگی منجر به TypeError می شود. این اجرای دقیق‌تر به تشخیص زودهنگام خطاهای احتمالی کمک می‌کند.

 "use strict" const obj = {} Object.defineProperty(obj, 'key', { value: 10, writable: false }) obj.key = 20 console.log(obj.key)
اسکرین شات-2024-02-02-at-11.43.54-AM
حالت سخت هنگام تخصیص یک مقدار جدید به ویژگی فقط خواندنی خطا می دهد.

ویژگی های جاوا اسکریپت که به صورت پیش فرض از حالت سختگیرانه استفاده می کنند

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

نمونه هایی از این زمینه ها عبارتند از:

کلاس های ES6

ماژول های ES6

توابع پیکان

برچسب‌گذاری شده با واژه‌های قالب

نتیجه

جاوا اسکریپت به عنوان زبانی برای گفت ن تعامل ساده به صفحات وب شروع شد. اما از آن زمان تاکنون به یکی از پرکاربردترین زبان های برنامه نویسی برای ایجاد برنامه های کاربردی ساده و پیچیده تبدیل شده است.

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

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

با تشکر برای خواندن. و کد نویسی مبارک! برای آموزش های عمیق تر، در کانال YouTube من مشترک شوید.

خبرکاو