Переменные, объявленные let и const, действительны только в блоке кода.
{let a = 10; var b = 1;} a // referenceerror: a не определено. B // 1Нет переменной продвижения
Переменные должны использоваться после объявления, в противном случае будет сообщена ошибка.
var tmp = 123; if (true) {tmp = 'abc'; // referenceerrorlet tmp;}Повторные заявления не допускаются
// function function () {пусть a = 10; var a = 1;}Объем уровня блока
function f () {console.log ('Я снаружи!'); } (function () {if (false) {// повторить функцию function f () {console.log ('I Im Inside!');}} f ();} ()); // Я внутри! ES5 Функция продвижения // Я на улице! ES6 Уровень блокаConst Command
Объявите постоянную только для чтения. После объявления значение постоянной не может быть изменено.
После того, как переменная объявлена, она должна быть инициализирована немедленно и не может быть оставлена для назначения позже.
Глобальные переменные, объявленные командой let, Const Command и Class Command, не принадлежат к свойствам глобального объекта.
var a = 1; // Если в среде реплики узла, его можно записать как Global.a // или с помощью общего метода, его можно записать, как это.
Далее я представлю вам команду const es6 отдельно
JS, который всегда был сосредоточен на ECMA, никогда не имела концепции констант, и ES6 компенсировал этот недостаток;
const foo = 'foo'; foo = 'bar'; // typeerror: назначение постоянной переменной.
Приведенный выше пример заявляет о константе основного типа. Если вы попытаетесь изменить начальное значение, сообщается об ошибке; Если это значение типа ссылки, это также применяется, но на что нужно обратить внимание на одно, приведите пример:
const foo = []; foo = [1]; // Присвоение постоянной переменной.
Нормальная ошибка, без проблем, посмотрите еще раз:
const foo = [1,2,3]; foo [1] = 4; console.log (foo) // [1, 4, 3]
Почему в этом нет ошибки? И может ли это быть успешно модифицировать? Разница между этими двумя примерами заключается в том, что первое изменило соответствующее содержание указателя (необходимо быть знакомым с типом эталонного JS), а последний еще не изменил указание, но содержание указательного объекта изменилось. Для Foo я просто указатель, ответственный за указание на соответствующий объект. Что касается контента объекта, я не забочусь о своем бизнесе, поэтому я могу его изменить; Если я не хочу, чтобы контент изменился, я могу использовать другой метод;
const foo = object.freeze ([1,2,3]); foo [1] = 4; console.log (foo) // [1, 2, 3]
Таким образом, вам не нужно беспокоиться о том, чтобы быть измененным;