Мы знаем, что letэто зарезервированное ключевое слово, которое определяет переменную в JavaScript.
var let = 2;
console.log(let); // return 2
Так почему же это не ошибка?
Мы знаем, что letэто зарезервированное ключевое слово, которое определяет переменную в JavaScript.
var let = 2;
console.log(let); // return 2
Так почему же это не ошибка?
Ответы:
let только зарезервированное слово в строгом режиме:
'use strict';
var let = 5;
Uncaught SyntaxError: неожиданное зарезервированное слово строгого режима
Это связано с тем, что браузеры обычно отдают предпочтение обратной совместимости превыше всего. Хотя он letбыл представлен в ES2015 (и его использование было предусмотрено ранее), предыдущие сценарии, которые использовались letв качестве имени переменной, продолжали работать должным образом. Например, если ваш сценарий был написан в 2008 году:
var let = 2;
console.log(let);
Тогда это продолжит работать и в 2020 году.
По очень похожим причинам, asyncа awaitтакже разрешены в качестве имен переменных .
Что касается того, почему использование letошибок в строгом режиме - строгом режиме было введено в ES5 в 2009 году. Тогда разработчики языка увидели, что использование новых ключевых слов для объявления переменных было возможным в будущем, но это не было Еще не дошло до камня, а до ES6 еще далеко. После выхода ES5 разработчики сценариев могут подключиться к строгому режиму, чтобы сделать код менее запутанным и заменить скрытые ошибки явными. Хотя letне было использовать для объявления переменной еще , запрещая его как имя переменной в строгом режиме улучшилась читаемость будущих сценариев , которые выбравших в строгом режиме, в то же время не нарушая существующие сценарии.
letа некоторые другие произведения действуют как зарезервированные слова только в строгом режиме. В спецификации говорит
Недопустимый в строгом режиме : Те, которые контекстуально запрещены в качестве идентификаторов, кода в строгом режиме:
let,static,implements,interface,package,private,protected, иpublic;
Вы можете увидеть letв списке слов, которые запрещены только в строгом режиме. Если вы хотите выдать ошибку для использования в letкачестве имени переменной, вы можете использовать строгий режим
"use strict";
var let = 3
«использовать строгое»;
это даст ошибку. используйте пакетные инструменты, такие как webpack, grunt для компиляции кода.