در بزرگ‌ترین بروزرسانی جاوا اسکریپ به نام (یا به طور خلاصه) کلیدواژه‌های جدیدی همچون و معرفی شدند که می‌توان از آن‌ها در کنار کلیدواژه var استفاده کرد. در این آموزش به معرفی این سه کلیدواژه پرداخته، تفاوت هرکدام را بررسی کرده و سپس کاربردشان را به صورت جداگانه بیان خواهیم کرد. با همراه باشید. به طور کلی در استاندارد ، می‌توان از و در کاربردهای یکسانی از var استفاده کرد. اما چرا سه کلیدواژه یکسان؟ تفاوت اصلی آن‌ها در چیست؟ برای درک این موضوع، ابتدا باید با عملکرد کلیدواژه var آشنا شویم. همانطور که در توضیحات وب‌سایت اصلی جاوااسکریپ آمده، دامنه تمام متغیرهای تولیدشده در کلیدواژه ، ( است. به زبان ساده‌تر، این متغیرها تنها در داخل تابع مخصوص به خود و همچنین توابع زیرمجموعه در دسترس برنامه‌نویس هستند. برای درک این موضوع به قطعه کد زیر توجه کنید: و اگر این متغیر درون تابع مورد نظر فراخوانی شود، می‌توان از آن در تمام قسمت‌های تابع استفاده کرد. در این مثال می‌توانید به یک متغیر درون تابع اصلی و همچنین تابع زیرمجموعه خود دسترسی داشته باشید اما فراخوانی آن از بیرون توابع امکان‌پذیر نیست. حال برای درک نقطه ضعف کلیدواژه ، به قطعه کد زیر توجه کنید: همانطور که می‌بینید، هر دو متغیر و بعد از حلقه for نیز قابل استفاده هستند. در دسترس بودن این دو متغیر در بیرون از حلقه می‌تواند باعث بی‌نظمی و حتی به وجود آمدن باگ در نرم‌افزار شود و این چیزی نیست که شما به عنوان یک برنامه‌نویس از دیدن آن خوش‌حال شوید. اما به هر حال این عملکرد در کلیدواژه وجود دارد. یکی دیگر از تناقضات کلیدواژه در عمل است. البته این عملکرد مختص var نیست اما باعث به وجود آمدن تناقض می‌شود. در عمل ، اولویت تمام تعاریف متغیرها به اول تابع منتقل می‌شود. برای متوجه شدن این موضوع، به کد زیر توجه کنید: کد بالا در جاوااسکریپ به صورت زیر تفسیر خواهد شد: همانطور که می‌بینید تعاریف و قبل از هر عمل دیگری درون تابع خوانده می‌شوند. حال که با عملکرد در جاوااسکریپ آشنا شدیم، بهتر است به سراغ کلیواژه برویم و عملکرد آن را با var مقایسه کنیم. دامنه کلیدواژه برخلاف ، ( است. این بدین معناست که در این کلیدواژه هیچ‌کدام از مشکلات را شاهد نیستیم. به طور دقیق‌تر، متغیرهای ساخته شده توسط کلیدواژه تنها درون بلاک مخصوص خود قابل استفاده هستند. همچنین در عمل نیز به نوعی تظاهر به خنثی بودن دارد. (در ادامه به این موضوع می‌پردازیم. ابتدا به مثال زیر توجه کنید تا با عملکرد کلیدواژه let آشنا شویم: کد زیر بخاطر فراخوانی متغیرها در خارج از حلقه for با خطا مواجه خواهد شد: همانطور که مشاهده می‌کنید، در کلیدواژه خبری از رفتار غیرعادی نیست و همه چیز دقیقا به شکل استاندارد خود تعریف و فراخوانی خواهد شد. البته این نوع رفتار تنها مختص تابع و حلقه‌ها نیست و برای تمامی بلاک‌های برنامه‌نویسی صدق می‌کند. کد زیر این موضوع را بهتر توضیح می‌دهد: اما یک تفاوت دیگر نیز میان و وجود دارد که در بالا اشاره‌ای به آن شد کلیدواژه در عمل به نوعی خنثی و خلاف رفتار معمول جاوااسکریپ عمل می‌کند. در واقع تمام اعمال در جاوااسکریپ تحت ت ثیر هستند و کلیدواژه نیز از این قاعده مستثنی نیست اما در عمل، اگر متغیری را قبل از تعریف مورد استفاده قرار دهید، برنامه با خطا مواجه خواهد شد. به کد زیر توجه کنید: وجود این تفاوت کاملا منطقی و حساب‌شده است. پس این اصل را به خاطر بسپارید، مخصوصا اگر هدفتان اصلاح و ساده‌سازی یک پروژه باشد. در این مورد، مثال دیگری نیز وجود دارد که می‌خواهم به آن اشاره کنم. این مثال حالت ویژه‌ای از را نشان می‌دهد که شاید برای شما هم جالب باشد: خروجی کد بالا به صورت زیر خواهد بود: خب . همانطور که می‌بینید این خروجی مورد انتظار ما نیست. ممکن است کمی منطقی به نظر برسد اما با توجه به الگوریتم بسته جاوااسکریپ، می‌تواند به عنوان یک باگ تلقی شود. شاید در نگاه اول کلیدواژه نیز نتواند کاری برای ما انجام دهد اما برخلاف تصور این مشکل را برطرف کرده است. طبق استاندارد ، دامنه کلیدواژه نه تنها به حلقه for مربوط می‌شود بلکه دامنه آن در هر تکرار نیز فراخوانی خواهد شد. پس اگر قطعه کد بالا را با استفاده از بازنویسی کنیم: خروجی زیر را به ما تحویل خواهد داد: از این رو باز هم مشکلات برطرف شدند. حال که به طور کامل با عملکرد و آشنا شدیم، وقتش رسیده تا به کلیدواژه نگاهی بیاندازیم. در عمل کلیدواژه‌های یو تفاوت چندانی با هم نخواهند داشت. اما تمامی تفاوت‌های گفته شده در و در مورد و نیز صدق می‌کنند. به عبارت دیگر، و تا حدودی شبیه به هم هستند، از این رو دامنه هر دو ( است و عملکرد یکسانی نیز خواهند داشت. تنها یک مورد باعث تفاوت میان و است: درست مانند عملکرد تمامی متغیرهای ثابت در بیش‌تر زبان‌های برنامه‌نویسی باید در هنگام تعریف این دسته از متغیرها، مقدار اولیه را نیز به آن‌ها نسبت دهید. این موضوع می‌تواند کارایی زیادی در پروژه‌های برنامه‌نویسی شما داشته باشد، اما یک موضوع را بخاطر داشته باشید: ( ساخته شده توسط کلیدواژه تغییرپذیر هستند. به عبارت دیگر می‌توانید عملیات زیر را بر روی شیء انجام دهید: این ویژگی باعث می‌شود که بتوانید تقریبا در تمام شرایط کدنویسی از کلیدواژه استفاده کنید. خب، تا اینجا با مفهوم ، و آشنا شدیم و تفاوت هر کدام را سنجیدیم. حالا کارایی و کاربرد هرکدام را بررسی خواهیم کرد. پاسخ کوتاه: " ". و در عمل نیز همین‌گونه است. دلایل زیادی وجود دارد که باعث شود به کل بیخیال استفاده از کلیدواژه شویم. البته بعضی مواقع شرایطی وجود دارد که باید دامنه متغیرهای خود را در محدوده توابع تعریف کنیم ( ، در غیر این صورت لزومی به استفاده از کلیدواژه نیست، این کار تنها باعث ایجاد بی‌نظمی در کدنویسی خواهد شد. از سوی دیگر، کلیدواژه‌های و تمام ویژگی‌های عملکردی را در اختیارتان خواهند گذاشت، اما در عوض هیچ‌کدام باعث بروز رفتار غیرعادی در کدنویسی نخواهند شد. هر دو این کلیدواژه‌ها در یک گروه‌بندی قرار دارند، پس استفاده از هر کدام در کدنویسی، بستگی به استفاده‌نکردن از دیگری دارد. پس تمام متغیرهایی که در طول برنامه‌نویسی ممکن است مقادیری قابل تغییر داشته باشند را با و متغیرهایی را که باید در تمام طول برنامه ثابت بمانند را با تعریف کنید. با این روش، به طور کاملا ساده از خطا و باگ نرم‌افزاری جلوگیری خواهید کرد. هرچه زودتر استفاده از کلیدواژه را کنار بگذارید. اگر به و دسترسی دارید، پس دلایل خوبی برای اینکار خواهید داشت. همچنین شاید بهتر باشد دست خود را به استفاده بیش‌تر از عادت دهید. (البته زمانی که نیازی به تغییر مقدار یک متغیر نداشته باشید. کلیدواژه باید انتخاب پیش‌فرض شما در کدنویسی باشد و تنها زمانی که نیاز است از استفاده کنید. این امر باعث می‌شود که کد تمیزتر و متغیرهای منظم‌تری را به خروجی ببرید. خب، شما کاربران اگر سوال، دیدگاه و یا انتقادی در این مورد دارید، نظر خود را در پایین همین مقاله برایمان ارسال کنید. از شنیدن دیدگاه‌های چالش‌برانگیز شما خوش‌حال می‌شویم.