كلمه كليديlet درجاوااسكريپت براي تعريف متغير و استفاده ازآن درهمان بلوك تعريفي بكار گرفته ميشود .اين متغيررا نمي توان خارج از ناحيه تعريفي استفاده كرد.
كي وردlet براي تعريف متغير در جاوااسكريپت استفاده ميشود و داراي مشخصات زير است.
با كي وردlet مورد زيرامكان پذير نيست . تعريف مجدد
let x = "John Doe"; let x = 0;
با كي وردvar تعريف مجدد امكان پذيراست .مثال زير
var x = "John Doe"; var x = 0;
جاوااسكريپت قبل ازES6(2015) از بعد استفاده از متغيرها داراي ميدان جهاني وميدان تابعي بود .تعريف متغير فقط باvar انجام ميشد.
ES6دو كي ورد مهم جديد را در جاوااسكريپت معرفي كرد .آنها let , const بودند كه براي تعريف متغيرها معرفي شدند .ميدان استفاده متغيرهاي تعريفي آنها بلوكي است .يعني درهمان بلوكي تعريف ميشوند، قابل استفاده هستند.
مثال ـ تعريف متغير باlet
{
let x = 2;
}
// x can NOT be used here
متغير تعريف شده باvar داراي ميدان بلوكي نبوده وداراي ميدان جهاني است . يعني اگر باآن متغيري بلوكي "{ }" تعريف شود خارج ازاين بلوك هم قابل دسترسي واستفاده ميباشد.
مثال ـ تعريف متغير براي ميدانvar
{
var x = 2;
}
// x CAN be used here
تعريف مجدد متغير باvar ميتواند انجام شود، اما ممكن است مشكلاتي همراه داشته باشد.
تعريف مجدد دريك بلوك ، ميتوان آنرا دربلوك ديگر تعريف مجدد نمود.
مثال ـ نمونه اي ازتعريف مجدد متغير باvar
var x = 10; // Here x is 10 { var x = 2; // Here x is 2 } // Here x is 2
تعريف مجدد باlet ميتواند مشكل بالا رابرطرف نمايد .تعريف مجدد يك متغيردر داخل يك بلوك، تاثيري در متغيرتعريف شده همنام خارج از بلوك ندارد
مثال ـ تعريف مجددمتغير با كي وردlet
let x = 10; // Here x is 10 { let x = 2; // Here x is 2 } // Here x is 10
نكته ـ تعريف مجدد متغير درهمان بلوكي تعريفي باlet امكان پذير نيست .
در جدول زير روي موارد مختلف كي ورد ها مقايسه شده اند.
Keyword | Scope | Redeclaer | Reassign | Hoisted | Binds this |
---|---|---|---|---|---|
var | NO | Yes | Yes | Yes | Yes |
let | Yes | No | Yes | No | No |
const | Yes | No | No | No | No |
مزيت كي ورد هاي تعريف متغير:
موارد نا مطلوب كي وردهاي تعريف متغير:
كي ورد هايlet , const توسطInternal Explorer 11 و يا قبلي آن پشتيباني نمي شوند.
جدول زير اولين نسخه هاي هستند كه مرور انهارا كامل پشتيباني ميكنند.
49.0 | 12.0 | 36.0 | 11.0 | 36.0 |
Mar 2016 | Jul 2015 | Jan 2015 | Sep 2017 | Mar 2016 |
تعريف مجدد متغير با كي وردvar در هرجاي برنامه مجاز ميباشد .
مثال ـ تعريف مجدد متغير
var x = 2; // Now x is 2 var x = 3; // Now x is 3
باlet تعريف مجدد متغير در همان بلوك تعريفي مجازنيست .
مثال ـ تعريف مجدد غير مجازمتغير باlet
var x = 2; // Allowed let x = 3; // Not allowed { let x = 2; // Allowed let x = 3; // Not allowed } { let x = 2; // Allowed var x = 3; // Not allowed }
تعريف مجدد متغير باlet در بلوك ديگر مجاز ميباشد، اما آنها متغير همنام ولي هر در فضاي خود مستقل ميباشند وهيچ ارتباطي بيكديگر ندارند.
مثال ـ تعريف مجدد مجاز متغير باlet
let x = 2; // Allowed { let x = 3; // Allowed } { let x = 4; // Allowed }
متغير تعريف شده باvar داراي اجازه مقدار دهي قبل از تعريف ميباشد . بدين معني كه ميتوان متغير را بالاتر از دستور تعريفش استفاده نمود.
مثال ـ مورد زير مقدار دهي قبل ازتعريف وقابل قبول است.
carName = "Volvo";
var carName;
تعريف متغير باlet بايد در بلوك بايدHoisted باشد .يعني قبل از اولين دستور مقدار دهي باشد.
مثال ـ مورد مقدار دهي قبل از تعريف كه با خطا همراه است.
carName = "Saab";
let carName = "Volvo";
در مثال فوق بلوك مقداردهي وتعريف ازطريق كي وردtry مديريت ميشود، وباعث اعلام خطاي آن ميشود.