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


2

letа деякі інші твори діють як зарезервовані слова лише у суворому режимі. У специфікації говорить

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

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

"use strict";
var let = 3


0

'використовувати суворо';

це дасть помилку. використовуйте інструменти для комплектування, такі як webpack, grunt для складання коду.


прочитайте питання двічі
Manjeet Thakur
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.