我在Chrome开发者工具中玩耍,并尝试了以下代码:
let = 1;
let x = 2;
console.log(let); // 1
console.log(x); // 2Run Code Online (Sandbox Code Playgroud)
如果我将“ let”替换为“ var”,则以上代码将不起作用。
我假设这let = 1与相同var let = 1。如果是这样,不let x = 2应该翻译成1 x = 2错误吗?
Tyl*_*per 10
我假设这
let = 1与var let = 1
它声明一个变量,但不相同。此处的主要区别在于,通过省略诸如var,let或的声明const,您可以全局声明该变量*(假设您未设置先前声明的变量)。这就是所谓的隐式全局 -臭名昭著的代码味道。
*在大多数情况下,“全局”将引用window对象,但这并非总是如此。例如,Node.js有其自己的global名称空间对象,该对象引用当前模块。
如果是这样,不
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并创建一个隐式全局变量,这非常糟糕。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |