Dlaczego słowo kluczowe zastrzeżone w JavaScript jest dozwolone jako nazwa zmiennej?

Odpowiedzi:

25

let to tylko słowo zastrzeżone w trybie ścisłym:

'use strict';
var let = 5;

Uncaught SyntaxError: Nieoczekiwane słowo zastrzeżone w trybie ścisłym

Wynika to z faktu, że przeglądarki przede wszystkim nadają priorytet kompatybilności wstecznej . Mimo że letzostał wprowadzony w ES2015 (a jego użycie było wcześniej przewidywane), wcześniejsze skrypty, które były używane letjako nazwa zmiennej, działałyby zgodnie z oczekiwaniami. Na przykład, jeśli skrypt został napisany w 2008 r .:

var let = 2;
console.log(let);

Wtedy nadal działałby również w 2020 r.

Z bardzo podobnych powodów asynci awaitsą również dozwolone jako nazwy zmiennych .

Jeśli chodzi o to, dlaczego stosowanie letbłędów w trybie ścisłym - tryb ścisły został wprowadzony w ES5 w 2009 roku. Projektanci języków zauważyli, że użycie nowych słów kluczowych do deklarowania zmiennych było możliwe w przyszłości, ale nie było nie był jeszcze osadzony w kamieniu, a ES6 był jeszcze daleko. Po wydaniu ES5 autorzy skryptów mogli włączyć tryb ścisły, aby kod był mniej mylący, i zamieniać ciche błędy na jawne. Chociaż letnie był użyteczny dla deklaracji zmiennej jeszcze , zakazujące go jako nazwa zmiennej w trybie ścisłym poprawiło czytelność przyszłych scenariuszy, które zdecydowały się w trybie ścisłym, a jednocześnie nie łamiąc żadnych istniejących skryptów.

CertainPerformance
źródło
2

leta niektóre inne dzieła działają jako słowa zastrzeżone tylko w trybie ścisłym. Te specyfikacje mówi

Niedozwolone w trybie ścisłym : Te, które są kontekstowo nieuznany jako identyfikatory, w ścisłym trybie kodu: let, static, implements, interface, package, private, protected, i public;

Możesz zobaczyć letlistę słów, które są niedozwolone tylko w trybie ścisłym. Jeśli chcesz zgłosić błąd przy używaniu letjako nazwy zmiennej, możesz użyć trybu ścisłego

"use strict";
var let = 3

Maheer Ali
źródło
0

„stosować ścisłe”;

da błąd. użyj narzędzi pakietu, takich jak webpack, chrząknij, aby skompilować swój kod.

Arunesh Saxena
źródło
przeczytaj pytanie dwa razy
Manjeet Thakur