Estaba jugando en las devtools de Chrome y probé el siguiente código:
let = 1;
let x = 2;
console.log(let); // 1
console.log(x); // 2
El código anterior no funcionará si reemplazo "let" con "var".
Supongo que let = 1
es lo mismo que var let = 1
. Si es así, ¿no let x = 2
debería traducirse 1 x = 2
y, por lo tanto, ser un error?
javascript
Resucitado
fuente
fuente
let
es una palabra clave, no debe nombrar (o intentar nombrar) variables que. Me sorprende que Chrome incluso te deje (risas) hacer eso.Respuestas:
Declara una variable, pero no es lo mismo. La principal distinción aquí es que al omitir una declaración como
var
,let
oconst
, estás declarando esta variable globalmente * (suponiendo que no estás estableciendo una variable previamente declarada). Esto es lo que se conoce como un mundo implícito : un olor a código notorio .* En la mayoría de los casos, "global" se referiría al
window
objeto, pero este no es siempre el caso. Por ejemplo, Node.js tiene su propioglobal
objeto de espacio de nombres que se refiere al módulo actual.No.
let = 1
no anula la funcionalidad nativa de lalet
declaración / palabra clave. Simplemente ha creado una variable global del mismo nombre. ( Quizás no hace falta decirlo, ¡pero no hagas esto! )Y no preguntaste esto específicamente, pero vale la pena abordarlo:
var
es una palabra clave reservada .let
es una palabra clave reservada futura , lo que significa que actualmente solo está reservada en modo estricto . Eso en mente, si está tratando de escribir código que resista la prueba del tiempo, es mejor no usarlolet
como identificador. Como dice MDN en el artículo vinculado, me imagino que será una palabra reservada más pronto que tarde.fuente
Compatibilidad hacia atrás.
let
es relativamente nuevo, por lo tanto, no es una palabra clave reservada para no romper los scripts antiguos que lo usan como nombre de variable. Es por eso que puede usarlet
como nombre de variable y novar
.No. Es más bien igual
someothername = 1
y crea una variable global implícita que es muy mala.fuente