Посетите мой блог для оригинального сообщения: Объявление переменной в JavaScript: var, Let или Const?
В JavaScript есть 4 способа объявления переменной. Начальные веб -разработчики обычно смущены влиянием различных способов.
Следовательно, эта статья предназначена для начинающих, чтобы понять различия между 4 способами объявления переменных в JavaScript и когда их использовать.
1. ” Фристайл «Путь (да, это работает, но настоятельно не рекомендуется!)
myvariable;
Возможно, вы объявите переменную в JavaScript без использования какого -либо ключевого слова вар
, пусть
, констант
. Это просто означает, что вы создали глобальную переменную.
В среде узлов давайте запустим следующий фрагмент кода
a = "test"; console.log(a); // output: test
Результат показывает тест
, что означает, что это работает!
Однако, если мы добавим 'Использовать строгое'
Чтобы войти в строгий режим, Такой метод объявления запрещен
"use strict"; a = "test"; console.log(a); // ReferenceError: a is not defined
Ошибка выброшена. Ссылкаерр: А не определено
Этот метод очень Не Рекомендуется, потому что это запрещено в строгом режиме и загрязнет вашу глобальную среду. Если ваша глобальная среда содержит слишком много бесполезных временных переменных, ваша программа, скорее всего, попадет в непредсказуемые ошибки, и это будет ужасный опыт отладки по такой проблеме.
Итак, Не Используйте это вообще.
2. вар
var
является наиболее распространенным способом объявления переменной в JavaScript. До выхода ES6 вы всегда должны использовать var
Чтобы объявить свои переменные.
Однако var
Также имеет свои ограничения, потому что переменные, объявленные с var
находится на уровне функции.
Что это значит? Смотрите следующий пример.
"use strict"; function test() { for (var i = 0; i < 10; i++) { var count = i; } console.log(count); } test(); // Output: 9
Прежде чем запустить этот кусок кода, что вы ожидаете от вывода функции? Бросить ошибку? Вы, вероятно, думаете, что счет
Объявлен в пределах цикла, он не должен быть доступен вне цикла.
Но извините, если вы используете var
Чтобы объявить переменную, переменная принадлежит к области функции, что означает, что хотя счет
Объявлено в цикле для петли, счет
все еще принадлежит test ()
функция Следовательно, пока это внутри test ()
функция, счет
доступно!
Другое доказательство заключается в том, что никакой ошибки не брошено вообще Даже если ты console.log (count)
Прежде чем объявить это в рамках функции! Поскольку никакой ошибки не выбрана, было бы трудно отследить, когда возникает неожиданная ошибка.
"use strict"; function test() { console.log(count); // runs before declaration for (var i = 0; i < 10; i++) { var count = i; } } test(); // Output: undefined
Вывод показывает неопределенное
Вместо того, чтобы бросать ошибки! Вместо этого ошибки будут выбраны, если счет
не объявляется вообще!
"use strict"; function test() { console.log(count); // error is thrown } test();
3. позволять
пусть
введен в Es6 Анкет Он оценивается на уровне блока, который разрешает сложность, с которой вы можете столкнуться при использовании var
Анкет
С помощью позволять
, Следующий фрагмент кода правильно выбрасывает ошибки Referenceerror: счет не определяется
"use strict"; function test() { for (let i = 0; i < 10; i++) { let count = i; } console.log(count); // ReferenceError: count is not defined } test();
Это потому, что пусть
делает счет
переменная стать блоком. счет
существует только в этом для петли. Это лучший способ использовать при объявлении переменных.
Тем не менее, он также имеет свой недостаток. пусть
не совместим со старыми браузерами, такими как IE 11. Если вы пишете коды JavaScript непосредственно для дисплея браузера (не скомпилированный Babel) и вам нужно позаботиться о пользователях со старыми браузерами, вам следует рассмотреть возможность использования var
Потому что несовместимый пусть
Скорее всего, вызовут проблемы в старых браузерах и остановите рендеринг веб -страницы после возникновения ошибки.
4. констант
const
также введен в ES6. То же, что пусть
, это также оценивается на уровне блока. Единственная разница в том, что const
Переменная – это постоянная, значения которых не могут быть изменены.
"use strict"; const a = 1; a = 2;
Приведенный выше фрагмент кода выбросит ошибку TypeError: Назначение постоянной переменной.
Кроме того, если вы работаете с массивами или объектами, все в порядке с постоянными объявлениями, но позже измените его атрибуты или участники. Рассмотрим следующий фрагмент кода:
"use strict"; const a = []; const b = {}; a.push(1); b.key = 2; console.log("a", a); console.log("b", b); // output: // a [ 1 ] // b { key: 2 }
Ошибка не произошла. Это потому, что постоянные значения A
а также b
их адреса в памяти, вместо их членов или атрибутов. Если мы назначаем адрес A
к b
Как показано ниже, будут проведены ошибки.
"use strict"; const a = []; const b = {}; a = b; // TypeError: Assignment to constant variable.
Поэтому, пока вы не указываете A
или b
В других местах не произойдет ошибка.
Рекомендуется сделать это, чтобы убедиться, что вы работаете в правильном экземпляре объекта/массива.
Вы никогда не должны объявлять переменную без вар
, пусть
или const
!
Также var
Следует также избегать, если вам не нужно рассмотреть проблемы совместимости браузера.
Хорошей практикой является то, что вы всегда должны рассмотреть возможность объявления переменной с использованием констант
. Используя const
По умолчанию помогает вам избежать ненужных ошибок, таких как небрежно повторно уценить значения с важной переменной. Если вы не уверены, что измените его значения позже. Тогда второй вариант всегда должен быть пусть
Анкет
Оригинал: “https://dev.to/zhiyueyi/variable-declaration-in-javascript-var-let-or-const-1789”