یکی دیگر از روش های تعریف متغیر استفاده از کلمه کلیدی let است. این نوع تعریف در نسخه es6 سال ۲۰۱۵ ارائه شد.
در یک محدوده، متغیری که با let تعریف می‌شود دیگر قابل بازنویسی نیست. اما با کلمه کلیدی var این امکان وجود دارد.

مثال:

یا:

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

مثال:

تعریف متغیر با کلمه کلیدی let وابسته به محدوده بلاک تعریف شده است. قبل از نسخه ۶ جاوااسکریپت تنها دارای دو محدوده عمومی و محلی برای تعریف متغیر بود اما در نسخه ۶ بلاک جدیدی برای تعریف متغیر با let و const تعریف شده است. این دو بر خلاف var به محدوده بلاک خود وفادار هستند.
متغیری که با کلمه کلیدی let درون بلاک {} تعریف می‌شود دیگر در خارج از بلاک قابل دسترس نیست.

مثال:

یا

 

تعریف دوباره متغیر با var

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

مثال:

راه حل

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

مثال:

 

تعریف همزمان یک نام متغیر با let و var در یک بلاک

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

مثال:

نکته: متغیری که با var تعریف شود دارای محدوده عمومی است اما نمی تواند متغیری که با همان نام با کلمه کلیدی let در یک بلاک دیگر تعریف شده است را تغییر دهد.

مثال:

 

حالت Hoisting در let

در واقع Hoisting به این معنی است که شما میتوانید متغیری را مقداردهی و استفاده کنید که قرار است بعدا تعریف شود.
این حالت در کلمه کلیدی var وجود دارد و برنامه ایرادی نمی گیرد.

مثال:

توجه: در صورت تعریف متغیر با var و مقداردهی آن در انتهای اسکریپت مقدارش به سمت بالای اسکریپت حرکت نمی کند و مقدارش undefined است.

مثال:

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

مثال:

 

پشتیبانی از مرورگرها

مرورگر Chrome مرورگر Firefox مرورگر IE مرورگر Edge مرورگر Safari مرورگر Opera
از ۴۹ به بعد از ۴۴ به بعد این ویژگی در ie 11 و قبلتر از آن پشتیبانی نمیشود. از ۱۲ به بعد از ۱۱ به بعد از ۳۶ به بعد

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

این ایمیل برای عموم منتشر نمی شود