فهرست مطالب
EcmaScript(اکما اسکریپت) چیست؟
EcmaScript یا به اختصار ES، یک استاندارد برای زبان جاوااسکریپت (JavaScript) است که توسط سازمان Ecma International تعریف شده است. این استاندارد قواعد و روشهایی را برای زبان جاوااسکریپت تعریف میکند که به توسعهدهندگان کمک میکند تا بتوانند به راحتی و با پایداری بیشتری برنامههای جاوااسکریپت خود را بنویسند.
ES شامل مجموعهای از ویژگیها و تغییراتی است که به زبان جاوااسکریپت اضافه شدهاند، از جمله مفاهیمی مانند کلاسها، پارامترهای پیشفرض، تابع جدید async/await و… که تا زمان ایجاد ES، در زبان جاوااسکریپت موجود نبودند.
از آنجا که ES به عنوان یک استاندارد ارائه شده است، تمامی مرورگرهای وب مدرن این استاندارد را پشتیبانی میکنند و برنامهنویسان میتوانند از ویژگیهای جدید ES در برنامههای خود استفاده کنند.
تفاوت جاوا اسکریپت (javascript) و EcmaScript(اکما اسکریپت) چیست؟
JavaScript یا JS یک زبان برنامهنویسی است که ابتدا توسعه داده شد و در مرورگرهای وب برای اجرای کدهای سمت کاربر (client-side) استفاده میشود. اکما اسکریپت (EcmaScript) همان زبان JavaScript است که به صورت استانداردی برای آن تعریف شده است. به عبارت دیگر، EcmaScript یک استاندارد برای زبان JavaScript است.
از آنجا که JavaScript یک زبان پویا و در حال توسعه است، هر چند مرورگرهای وب مختلف و محیطهای توسعه مختلفی از JS پشتیبانی میکنند، اما همه آنها از تمامی ویژگیهای JS پشتیبانی نمیکنند. بنابراین، استفاده از استاندارد EcmaScript برای تضمین پشتیبانی تمامی محیطها و مرورگرهای وب مختلف، بسیار مهم است.
به عنوان مثال، اگر یک برنامهنویس از ویژگیهای جدید EcmaScript مانند async/await استفاده کند، این ویژگی بهطور پیشفرض در تمامی مرورگرها و محیطهای توسعه پشتیبانی نخواهد شد. اما با استفاده از ابزارهای مختلفی مانند بابل (Babel)، کد EcmaScript میتواند به کد JavaScript قابل اجرا در مرورگرهای قدیمی تبدیل شود.
در کل، JavaScript یک زبان برنامهنویسی است و EcmaScript یک استاندارد برای آن است که به توسعهدهندگان کمک میکند تا بتوانند به راحتی و با پایداری بیشتری برنامههای JavaScript خود را بنویسند.
دستور let
let یکی از ویژگیهای جدیدی است که در استاندارد EcmaScript 2015 (ES6) به زبان JavaScript اضافه شده است. این قابلیت به برنامهنویسان کمک میکند تا بتوانند متغیرهایی را با استفاده از تعریف let ایجاد کنند که در دسترس فقط در بلوک مشخصی از کد باشند.
با تعریف یک متغیر با let، این متغیر فقط در بلوکی که در آن تعریف شده است و بلوکهای داخلی آن قابل دسترسی است. به عنوان مثال:
let x = 2;
console.log(x); // 2
}
console.log(x); // ReferenceError: x is not defined
در این مثال، متغیر x با استفاده از let در داخل بلوک {} تعریف شده است و فقط در داخل آن بلوک قابل دسترسی است. در خارج از بلوک، متغیر x تعریف نشده است و برنامه با پیغام خطای ReferenceError مواجه خواهد شد.
تفاوت این روش با استفاده از var در تعریف متغیر به این شکل است که، هنگامی که یک متغیر با استفاده از var تعریف شود، این متغیر در دسترس در سطح تابع (و نه بلوک) قرار میگیرد و میتواند در هر جای تابع استفاده شود.
استفاده از let به برنامهنویسان اجازه میدهد که بهراحتی متغیرهای داخل بلوک را مدیریت کنند و خطاهای مربوط به دسترسی به متغیرهای نامناسب را کاهش دهند.
تفاوت بین let و var
در زبان جاوااسکریپت، var و let دو روش برای تعریف متغیر هستند. اما تفاوتهای زیادی بین این دو روش وجود دارد. به تفصیل:
- دامنه دید (Scope):
متغیرهایی که با var تعریف میشوند، در دامنه دید سطح تابع قرار میگیرند، در حالی که متغیرهایی که با let تعریف میشوند، در دامنه دید بلوک قرار میگیرند. به این معنی که در صورت تعریف یک متغیر با var در داخل یک بلوک، این متغیر در دسترس در بقیه بلوکها و حتی در خارج از تابع قرار میگیرد. در حالی که در صورت تعریف با let، متغیر فقط در دامنه دید بلوک قابل دسترسی است.
- هویت (Hoisting):
متغیرهایی که با var تعریف میشوند، قبل از اجرای کد به بالا میروند و در دسترس میباشند. به عبارت دیگر، در صورتی که یک متغیر با var تعریف شود، حتی قبل از تعریف آن در کد، قابل استفاده است. اما متغیرهایی که با let تعریف میشوند، قابل دسترسی نیستند تا زمان تعریف آنها.
- تکراریبودن (Redeclaration):
در صورت تعریف دوباره یک متغیر با استفاده از var، مقدار آن بهروزرسانی میشود و خطایی رخ نمیدهد. اما در صورت تعریف دوباره یک متغیر با استفاده از let، خطایی با پیغام “Identifier has already been declared” رخ میدهد.
- قابلیت تعریف دوباره (Reassignment):
در صورت تغییر مقدار یک متغیر، هر دو var و let قابل تغییرند. اما در صورت تعریف مجدد یک متغیر با let، خطایی رخ میدهد، در حالی که در صورت تعریف مجدد یک متغیر با var، مقدار آن بهروزرسانی میشود.
به طور کلی، استفاده از let به برنامهنویسان اجازه میدهد که بهراحتی متغیرهای داخل بلوک را مدیریت کنند و خطاهای مربوط به دسترسی به متغیرهای نامناسب را کاهش دهند. در عوض، استفاده از var در بعضی موارد میتواند به دلیل دسترسی متغیر در سطح تابع، مفید باشد.
دستور const
const یکی از ویژگیهای جدیدی است که در استاندارد EcmaScript 2015 (ES6) به زبان جاوا اسکریپت اضافه شده است. این دستور برای تعریف متغیرهای ثابت (constant) استفاده میشود. به عبارت دیگر، با استفاده از const یک متغیر تعریف میشود که مقدار آن در طول زمان تغییر نمیکند.
در مقابل با let و var، مقدار یک متغیر تعریف شده با const قابل تغییر نیست. به عنوان مثال:
PI = 3; // TypeError: Assignment to constant variable.
در این مثال، متغیر PI با استفاده از const تعریف شده است و مقدار آن تغییر نمیکند. هنگامی که تلاش میکنیم که مقدار آن را تغییر دهیم، خطای TypeError: Assignment to constant variable رخ میدهد.
استفاده از const به برنامهنویسان کمک میکند تا برنامههای پایدارتری بنویسند، زیرا متغیرهای ثابتی که با const تعریف شدهاند، نمیتوانند توسط برنامه تصادفی تغییر کنند. این ویژگی به خصوص برای تعریف ثابتهایی مانند ثابتهای ریاضیاتی، ثابتهای مربوط به تنظیمات برنامه و غیره بسیار مفید است.