繁体   English   中英

在 Javascript 中分配“let”一个值

[英]Assigning “let” a value in Javascript

我在 Chrome devtools 中玩耍并尝试了以下代码:

 let = 1; let x = 2; console.log(let); // 1 console.log(x); // 2

如果我用“var”替换“let”,上面的代码将不起作用。

我假设let = 1var let = 1相同。 如果是这样,不应该let x = 2转换为1 x = 2并因此成为错误吗?

我假设let = 1var let = 1相同

它声明了一个变量,但并不相同。 这里的主要区别是,通过省略像varletconst之类的声明,您就是在全局声明这个变量* (假设您没有设置先前声明的变量)。 这就是所谓的隐式全局——臭名昭著的代码异味

*在大多数情况下,“全局”指的是window object,但并非总是如此。 例如,Node.js 有自己的global命名空间 object 引用当前模块。


如果是这样,不应该let x = 2转换为1 x = 2并因此成为错误吗?

不, let = 1不会覆盖let声明/关键字的本机功能。 您只是创建了一个同名的全局变量。 也许不言而喻,但不要这样做!


你没有特别问这个,但值得解决:

为什么我可以做let = 1而不是var = 1

var保留关键字

let是一个未来的保留关键字,这意味着它目前只在严格模式下保留。 请记住,如果您尝试编写经得起时间考验的代码,最好不要使用let作为标识符。 正如 MDN 在链接文章中所述,我想它迟早会成为保留字。

向后兼容。 let是相对较新的,因此它不是保留关键字,不破坏旧脚本使用它作为变量名。 这就是为什么您可以使用let作为变量名而不是var的原因。

我假设 let = 1 与 var let = 1 相同。

不,它等于someothername = 1并创建一个非常糟糕的隐式全局变量

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM