В этом руководстве вы узнаете о разнице между let и var в JavaScript с помощью примеров.
В JavaScript для объявления переменных используются как ключевые слова, так var
и let
.
let
Ключевое слово было введено в более поздней версии JavaScript , известной как ES6 (ES2015) . И это предпочтительный способ объявления переменных.
JavaScript let Vs var
Вот обзор различий между let
и var
.
позволять | вар |
---|---|
let имеет блочную область видимости. | var - это функция в области видимости. |
let не позволяет переобъявлять переменные. | var позволяет повторно объявлять переменные. |
Подъем не происходит. | Подъем происходит в var. |
JavaScript let Vs var в локальной области
var - это функция в области видимости
Переменная, объявленная внутри функции, var
может использоваться в любом месте функции. Например,
// program to print text // variable a cannot be used here function greet() ( // variable a can be used here var a = 'hello'; console.log(a); ) // variable a cannot be used here greet(); // hello
В приведенной выше программе переменная a объявлена с помощью var
. Переменную a можно использовать где угодно внутри функции greet
.
пусть блокируется
К переменной, объявленной с помощью, let
можно получить доступ только внутри блока кода. Например,
// program to print the text // variable a cannot be used here function greet() ( let a = 'hello'; // variable b cannot be used here if(a == 'hello')( // variable b can be used here let b = 'world'; console.log(a + ' ' + b); ) // variable b cannot be used here console.log(a + ' ' + b); // error ) // variable a cannot be used here greet();
Вывод
привет мир Uncaught ReferenceError: b не определен
В приведенной выше программе переменная a объявлена внутри функции, и к ней можно получить доступ из любого места внутри функции (a становится областью действия функции).
Однако переменная b объявляется внутри if
оператора блока. b будет ограничен блоком, и к нему можно будет получить доступ только внутри if
блока.
Следовательно, когда вы пытаетесь получить доступ к b вне if
блока, возникает ошибка (как показано выше в программе).
Примечание . Переменные, объявленные внутри функции, будут иметь область видимости как для, так var
и для let
.
let не позволяет повторно объявлять переменные
1. Переменную, объявленную с помощью, var
можно снова объявить заново. Например,
var a = 5; // 5 var a = 3; // 3
Переменная, объявленная с let
помощью, не может быть повторно объявлена в том же блоке или той же области. Например,
let a = 5; let a = 3; // error
Вывод
Uncaught SyntaxError: идентификатор 'a' уже объявлен
2. Повторное объявление переменной var
в другой области действия или в другом блоке также изменяет значение внешней переменной. Например,
var a = 5; console.log(a); // 5 ( var a = 3; console.log(a); // 3 ) console.log(a); // 3
Повторное объявление переменной let
в другой области или блоке рассматривает эту переменную как другую переменную. И значение переменной снаружи не меняется. Например,
let a = 5; console.log(a); // 5 ( let a = 3; console.log(a); // 3 ) console.log(a); // 5
3. Когда переменная, объявленная с помощью var
, используется в цикле, значение этой переменной изменяется. Например,
var a = 2; for(var a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 3
В приведенной выше программе for
цикл повторно объявляет переменную a. Следовательно, в конце значение a
изменяется на 3 .
Когда переменная, объявленная с помощью let , используется в цикле, значение переменной не изменяется. Например,
let a = 2; for(let a = 0; a < 3; a++) ( console.log('hello'); ) console.log(a); // 2
В приведенной выше программе for
цикл обрабатывает переменную a как переменную, отличную от указанной выше. И область этой переменной находится только внутри for
цикла. Следовательно, значение переменной a в конце остается равным 2 .
let не допускает подъема
Переменные, объявленные с помощью var
, поднимаются в верхнюю часть области действия программы. Например,
console.log(a); var a; // undefined (not an error)
Ключевое слово let
не разрешает подъем. Например,
console.log(a); let a; // Uncaught ReferenceError: a is not defined
Если вы хотите узнать больше о подъеме, посетите JavaScript подъемник.
let и var Поддержка браузера
Большинство современных браузеров поддерживают использование let
. Однако некоторые браузеры не поддерживают его полностью let
.
Чтобы узнать больше, посетите JavaScript let browser support.
Примечание . В случае глобальной области видимости оба var
и let
будут вести себя одинаково. Например,
var a = 5; // 5
Переменная a будет иметь глобальную область видимости, и к ней можно будет получить доступ в любом месте программы.
let a = 5; // 5
Переменная a будет иметь глобальную область видимости, и к ней можно будет получить доступ в любом месте программы.