¿Por qué se permite una palabra clave reservada de JavaScript como nombre de variable?

Respuestas:

25

let es solo una palabra reservada en modo estricto:

'use strict';
var let = 5;

SyntaxError no capturado: palabra reservada de modo estricto inesperado

Esto se debe a que los navegadores generalmente priorizan la compatibilidad con versiones anteriores por encima de todo. Aunque letse introdujo en ES2015 (y su uso se previó en algún momento antes), los scripts anteriores que se usaban letcomo nombre de variable continuarían funcionando según lo deseado. Por ejemplo, si su guión fue escrito en 2008:

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

Entonces continuaría funcionando en 2020 también.

Por razones muy similares, asyncy awaittambién se permiten como nombres de variables .

En cuanto a por qué el uso de leterrores en modo estricto: el modo estricto se introdujo en ES5, en 2009. En aquel entonces, los diseñadores de lenguaje vieron que el uso de nuevas palabras clave para declarar variables era una posibilidad en el futuro, pero no lo era. Todavía no está escrito en piedra, y ES6 todavía estaba muy lejos. Una vez que salió ES5, los escritores de guiones podían optar por el modo estricto para que el código fuera menos confuso y cambiar los errores silenciosos por errores explícitos. Aunque todavíalet no era utilizable para la declaración de variables , prohibirlo como un nombre de variable en modo estricto mejoró la legibilidad de los scripts futuros que optaron por el modo estricto, sin romper los scripts existentes.

Cierto rendimiento
fuente
2

lety algunas de las otras obras actúan como palabras reservadas solo en modo estricto. Las especificaciones dicen

No permitido en modo estricto : Los que están anulado contextualmente como identificadores, en el código de modo estricto: let, static, implements, interface, package, private, protected, y public;

Puede ver letdentro de la lista de palabras que solo están prohibidas en modo estricto. Si desea arrojar un error por usar letcomo nombre de variable, puede usar el modo estricto

"use strict";
var let = 3

Maheer Ali
fuente
0

'uso estricto';

Dará un error. use herramientas de paquete como webpack, gruñido para compilar su código.

Arunesh Saxena
fuente
lea la pregunta dos veces
Manjeet Thakur