编辑:请阅读问题!我已经知道区别了。这不重复。
显然,现在我应该始终使用var
关键字,因为let
并不支持所有内容。
当let关键字有更好的支持时(比方说,我在几年内使用Harmony编写Node应用程序),我应该何时使用let
关键字与var
关键字?
我理解差异 - var
用于函数作用域,而let
用于块作用域 - 但我正在寻找类似“始终使用let
关键字”或“使用”的内容函数顶部的var
关键字,但是for循环中的let关键字“。
答案 0 :(得分:27)
我会说,作为一项原则,您应该在不方便的情况下使用let
。如:
for (let i = 0; i < 100; i++) {
// Do something
}
if (condition) {
let msg = a + b + c;
console.log(msg);
alert(msg);
}
这种方法的优点是:
答案 1 :(得分: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);
}
答案 2 :(得分:-6)
如果需要函数作用域,那么答案很简单:[{1}}如果需要块作用域,则使用var
。