Почему
let=0Почему
let=0 Поскольку var был ключевым словом навсегда, но let нет. Таким образом, при добавлении let к языку, комитет TC39 должен указать это такое, что существующий код, который использовал let в качестве идентификатора не сломаться. (Одно из их главных правил - "не сломать паутину", и они относятся к ней очень серьезно [к счастью].)
Итак, let это ключевое слово в контексте, такое как объявление let, но также может быть идентификатором:
let a = 42; // Keyword, due to context
let = "I'm an identifier"; // Identifier, due to context
console.log(a);
console.log(let); var является зарезервированным словом и не может быть именем глобальной переменной. Но let также зарезервированное слово. И он отличается от var что он может использоваться как имя переменной.
let был добавлен в версию ES6. Для совместимости со старыми кодами, которые могут иметь имя переменной как let, все равно правильно использовать ее как имя. var был добавлен с начала Javascript, поэтому почему это запрещено.
let = 0;
console.log(let); Javascript имеет набор зарезервированных ключевых слов в ES5:
break, do, instanceof, typeof, case, else, new, var, catch, finally, return, void, continue, for, switch, while, debugger, function, this, with, default, if, throw, delete, in, пытаться
Недопустимо использование зарезервированного ключевого слова в качестве имени переменной или функции в JavaScript. Например, следующий код генерирует SyntaxError, который говорит: " Cannot use the keyword 'delete as a variable name
var delete = 1;
Но его отлично подходит для использования зарезервированных слов ES6, например, как имя переменной в ES5.
var let = 1;
ES5 определяет два modes для языка. Обычный JavaScript, существовавший до введения ES5, считается sloppy mode и поскольку ES5, программисты JavaScript могут выбрать свою программу в strict mode. Строгий режим вводит набор новых правил для JavaScript, включая дополнительные зарезервированные слова. Этот набор ключевых слов называется FutureReservedWord. Вот список:
инструменты, интерфейс, let, package, private, protected, public, static, yield
Ключевые слова FutureReservedWord не применяются в нестандартном JavaScript. Но в строгом режиме они считаются зарезервированными словами и их незаконными использовать в качестве имен переменных.
Подробнее здесь
Таким образом, вы можете использовать let как имя переменной, если не в строгом режиме. Но var - это зарезервированное ключевое слово все время.
Таким образом, вы можете сделать что-то вроде
var let = "some thing uneasy!";
console.log(let); На этот вопрос был дан ответ, и просто добавить к нему -
Согласно спецификации, let и static не являются частью списка ключевых слов, если не используются в строгом режиме.
В режиме строгого режима
letиstaticрассматриваются как зарезервированные ключевые слова через статические семантические ограничения, а не лексическую грамматику.