[英]Assigning “let” a value in Javascript
我在 Chrome devtools 中玩耍并尝试了以下代码:
let = 1; let x = 2; console.log(let); // 1 console.log(x); // 2
如果我用“var”替换“let”,上面的代码将不起作用。
我假设let = 1
与var let = 1
相同。 如果是这样,不应该let x = 2
转换为1 x = 2
并因此成为错误吗?
我假设
let = 1
与var let = 1
相同
它声明了一个变量,但并不相同。 这里的主要区别是,通过省略像var
、 let
或const
之类的声明,您就是在全局声明这个变量* (假设您没有设置先前声明的变量)。 这就是所谓的隐式全局——臭名昭著的代码异味。
*在大多数情况下,“全局”指的是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.