let - оголошує змінну з блоковою областю видимості.
let var1 [= value1] [, var2 [= value2]] [..., varN [= valueN]];
var1 - назва змінної.
value1 - значення змінної. Будь який тип даних або функція.
let дозволяє оголосити локальну змінну з обмеженою поточним блоком { } коду областю видимості. Відміну від var , яке оголошує змінну глобально або локально в усій функції незалежно від області блоку.
Старі браузери не підтримують let, так як це стандарт ES6.
alert(x); //ReferenceError, звертаємося до змінної яка буде оголошена у наступному рядку
let x=10; //оголошення змінної x
Подвійне оголошення змінної у одному ж блоці призведе до синтаксичної помилки коду:
let x=5;
alert(x);
let x=12; //SyntaxError: Identifier 'x' has already been declared
Оголошення змінної такої ж самої назви у різник блоках не призводить до помилки:
if(10>1){
let x=5; //оголошення змінної x в межах блоку if {...}
alert(x);
}
let x=12;
alert(x);
Зверніть увагу що switch має лише один блок.
var a=3;
switch( a ){
case 0 :
let b=3;
break;
case 1 :
let b; //SyntaxError через повторного оголошення змінної
break;
}
var x=5;
if(x>3){
let y='не двійка'; //зміна x буде видимою лише у блоці if {...}
console.log(y);
}
alert(y); //ReferenceError: y is not defined - змінної y не існує
Приклад різниці між var і let:
function LET(a){
if(a<0){
let a=0;
console.log(a); //0
}
console.log(a); //-9
}
function VAR(a){
if(a<0){
var a=0;
console.log(a); //0
}
console.log(a); //0
}
VAR(-9);
LET(-9);
Приклад використання let у циклі for:
var i = 15;
for(let i = 0; i < 10; i++){
console.log(i) ;
}
alert(i); //15