В чем разница между LET и VAR в объявлении переменных в javascript

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

Я надеюсь, что эта статья была полезна, чтобы понять разницу между этими двумя утверждениями.

Ссылка на основную публикацию