Wiemy, że letjest to zastrzeżone słowo kluczowe, które definiuje zmienną w JavaScript.
var let = 2;
console.log(let); // return 2
Dlaczego więc to nie jest błąd?
Wiemy, że letjest to zastrzeżone słowo kluczowe, które definiuje zmienną w JavaScript.
var let = 2;
console.log(let); // return 2
Dlaczego więc to nie jest błąd?
Odpowiedzi:
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.
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, ipublic;
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
„stosować ścisłe”;
da błąd. użyj narzędzi pakietu, takich jak webpack, chrząknij, aby skompilować swój kod.