تعريف متغيربلوكي درجاوااسكريپت Javascript let

Previous >    <Next  

‎كلمه كليدي‎let‎ درجاوااسكريپت براي تعريف متغير و استفاده ازآن درهمان بلوك ‎تعريفي بكار گرفته ميشود .اين متغيررا نمي توان خارج از ناحيه تعريفي استفاده كرد.

‎كي ورد‎let‎ براي تعريف متغير در جاوااسكريپت استفاده ميشود و داراي ‎مشخصات زير است.

‎عدم تعريف مجددCannot be Redeclared -‎

‎با كي ورد‎let‎ مورد زيرامكان پذير نيست . تعريف مجدد

let x = "John Doe";

let x = 0;

‎با كي ورد‎var‎ تعريف مجدد امكان پذيراست .مثال زير

var x = "John Doe";

var x = 0;

‎ميدان بلوكيBlock Scope -‎

‎جاوااسكريپت قبل از‎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

‎تعريف مجدد متغيرRedeclareing Variables -‎

‎تعريف مجدد متغير با‎var‎ ميتواند انجام شود، اما ممكن است مشكلاتي همراه داشته ‎باشد.

‎تعريف مجدد دريك بلوك ، ميتوان آنرا دربلوك ديگر تعريف مجدد نمود.

‎مثال ـ نمونه اي ازتعريف مجدد متغير با‎var

var x = 10;
// Here x is 10

{
var x = 2;
// Here x is 2
}

// Here x is 2

--(go to editor for change code and run)

‎تعريف مجدد با‎let‎ ميتواند مشكل بالا رابرطرف نمايد .تعريف مجدد يك متغيردر ‎داخل يك بلوك، تاثيري در متغيرتعريف شده همنام خارج از بلوك ندارد

‎مثال ـ تعريف مجددمتغير با كي ورد‎let

let x = 10;
// Here x is 10

{
let x = 2;
// Here x is 2
}

// Here x is 10

--(go to editor for change code and run)

‎نكته ـ تعريف مجدد متغير درهمان بلوكي تعريفي با‎let‎ امكان پذير نيست .

Difference Between var, let, const

‎تفاويت فيمابينvar , let , const

‎در جدول زير روي موارد مختلف كي ورد ها مقايسه شده اند.

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

‎مزيت كي ورد هاي تعريف متغير:

‎موارد نا مطلوب كي وردهاي تعريف متغير:

‎پشتيباني مرورگرBrowser Support -‎

‎كي ورد هاي‎let , const‎ توسطInternal Explorer 11 و يا قبلي آن پشتيباني ‎نمي شوند.

‎جدول زير اولين نسخه هاي هستند كه مرور انهارا كامل پشتيباني ميكنند.

Chorome Edge Firefox Safari Opera
49.0 12.0 36.0 11.0 36.0
Mar 2016 Jul 2015 Jan 2015 Sep 2017 Mar 2016

‎تعريف مجددRedeclaring -‎

‎تعريف مجدد متغير با كي ورد‎var‎ در هرجاي برنامه مجاز ميباشد .

‎مثال ـ تعريف مجدد متغير

var x = 2;
// Now x is 2

var x = 3;
// Now x is 3

--(go to editor for change code and run)

‎با‎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
}

--(go to editor for change code and run)

‎استفاده قبل ازتعريفLet Hoisting -‎

‎متغير تعريف شده با‎var‎ داراي اجازه مقدار دهي قبل از تعريف ميباشد . بدين معني ‎كه ميتوان متغير را بالاتر از دستور تعريفش استفاده نمود.

‎مثال ـ مورد زير مقدار دهي قبل ازتعريف وقابل قبول است.

carName = "Volvo";
var carName;

--(go to editor for change code and run)

‎تعريف متغير با‎let ‎بايد در بلوك بايدHoisted باشد .يعني قبل از اولين دستور ‎مقدار دهي باشد.

‎مثال ـ مورد مقدار دهي قبل از تعريف كه با خطا همراه است.

carName = "Saab";
let carName = "Volvo";

--(go to editor for change code and run)

‎در مثال فوق بلوك مقداردهي وتعريف ازطريق كي ورد‎try‎ مديريت ميشود، وباعث اعلام ‎خطاي آن ميشود.


Previous >    <Next