Почему зарезервированное ключевое слово JavaScript допускается в качестве имени переменной?

Ответы:

25

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не было использовать для объявления переменной еще , запрещая его как имя переменной в строгом режиме улучшилась читаемость будущих сценариев , которые выбравших в строгом режиме, в то же время не нарушая существующие сценарии.

CertainPerformance
источник
2

letа некоторые другие произведения действуют как зарезервированные слова только в строгом режиме. В спецификации говорит

Недопустимый в строгом режиме : Те, которые контекстуально запрещены в качестве идентификаторов, кода в строгом режиме: let, static, implements, interface, package, private, protected, и public;

Вы можете увидеть letв списке слов, которые запрещены только в строгом режиме. Если вы хотите выдать ошибку для использования в letкачестве имени переменной, вы можете использовать строгий режим

"use strict";
var let = 3

Махир Али
источник
0

«использовать строгое»;

это даст ошибку. используйте пакетные инструменты, такие как webpack, grunt для компиляции кода.

Арунеш Саксена
источник
прочитайте вопрос дважды
Манджит Тхакур