Ми знаємо, що 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 для складання коду.