cal*_*rae 38 javascript variables ecmascript-harmony ecmascript-6
编辑:请阅读问题!我已经知道区别了.这不是重复的.
显然,现在我应该总是使用var
关键词,因为let
一切都不支持.
当let关键字有更好的支持时(比方说,我在几年内使用Harmony编写Node应用程序),我什么时候应该使用let
关键字vs var
关键字?
我理解差异 - var
用于函数范围let
而是用于块作用域 - 但我正在寻找像"总是使用let
关键字"或" var
在函数顶部使用关键字,但在for循环中使用let关键字"之类的东西.
nee*_*lsg 27
我会说,作为一项原则,你应该let
在不方便的时候使用.如:
for (let i = 0; i < 100; i++) {
// Do something
}
if (condition) {
let msg = a + b + c;
console.log(msg);
alert(msg);
}
Run Code Online (Sandbox Code Playgroud)
这种方法的优点是:
Phi*_*l H 13
使用let作为一般规则,偶尔使用 var.
块作用域是标准和最可读的选择,并且将使调试更容易.块范围使得很容易看到变量在范围内的确切位置.函数范围使事情变得不那么明显,并且更容易意外地引入带有范围错误的错误.
通常,您可以使用的范围越小越好.因此let
过var
.
特别是,它有助于解决关闭变量的无穷问题,并且在执行闭包之前没有意识到它们的值会发生变化:
for (var i = 1; i <= 5; i++) {
var item = document.createElement("LI");
item.appendChild(document.createTextNode("Item " + i));
let j = i;
item.onclick = function (ev) {
alert("Item " + j + " is clicked.");
};
list.appendChild(item);
}
Run Code Online (Sandbox Code Playgroud)