var и let являются простыми деклараторами, что позволяет объявлять переменную в области видимости.
пусть работает очень похоже на вар. Основное отличие состоит в том, что область действия переменной var — это вся включающая функция.
Но что это действительно означает? например :
Давайте предположим, что у нас есть 10 кнопок с 10 разными идентификаторами, но они следуют префиксу «thebutton».
// Using VAR
for(var i=1; i<10; i++) {
$("#thebutton" + i).click(function () {
alert(i);
});
}
Переменная i будет использоваться в области действия функции нажатия кнопки как ссылка на i. Это означает, что если вы нажмете любую из кнопок, значение будет всегда 10.
'use strict';
// We need to set use strict, because all the Block-scoped declarations (let, const, function, class) are not yet supported outside strict mode
// Using let
for(let i=1; i<10; i++) {
$("#thebutton" + i).click(function () {
alert(i);
});
}
Поиграйте немного с этим примером:
История другая! Каждая кнопка будет оповещать свой номер последовательно из-за команды на ввод.
Действительно просто не так ли? пусть будет применяться только в его области применения!
{
// Start block
// let will be useful here !
// End Block
}
Если вы не додумались до конца, давайте попробуем еще один пример:
'use strict';
var country = "russia";
var a = 5;
var b = 10;
if (country === "russia") {
let a = 50; // A will be 50 only in russia !
var b = 1; // Will be applied globally, B will be change in all the world !
console.log(a); // 50
console.log(b); // 1
}
// We are outside russia !!!
console.log(a); // a will be 5 again !
console.log(b); // 1
Я надеюсь, что эта статья была полезна, чтобы понять разницу между этими двумя утверждениями.