因为根据What's the difference between using "let" and "var" to declare a variable? ,当在 for 循环中使用时,let 关键字的范围比 var 小。这是否意味着在 'for (var i=0...' 的所有地方,实际正确的方法应该是使用 let?我无法想象开发人员使用 'for (var i=0... ...' 会希望 var i 在 for 循环外仍然可见,这意味着所有 'for (var i=0...' 都是错误的,正确的方法是 'for (let i=0... '? 只是一个是或否的问题。
function allyIlliterate() {
//tuce is *not* visible out here
for( let tuce = 0; tuce < 5; tuce++ ) {
//tuce is only visible in here (and in the for() parentheses)
};
//tuce is *not* visible out here
};
function byE40() {
//nish *is* visible out here
for( var nish = 0; nish < 5; nish++ ) {
//nish is visible to the whole function
};
//nish *is* visible out here
};
最佳答案
let
在 Ecma Script 6(新的 javascript 版本)中引入,在撰写本文时仍在开发中。因此,暂时使用 var
会让您跨越更多浏览器。
另一方面,我敦促人们从现在开始使用let
而不是var
。我会继续列出原因,但您的帖子中已经有一个链接,其中有很好的解释。长话短说,let
可帮助您避免 javascript 中的变量提升并将变量的作用域保持在需要的位置。
更新
在我最近获得赞成票之前,我已经忘记了这篇文章。我想更新此声明。我个人最近尽可能多地使用 const
。如果你开始检查你的代码,我强烈推荐,并使用类似 airbnb lint 规则的东西,它也会告诉你使用 const。它将使您的变量成为常量,因此一旦您设置了它们的值,您将无法改变它们,因此它不适用于所有情况。 const
和 let
在范围方面也比 var
有优势,值得一读。我的使用层次结构是这样的 const
> let
> var
关于javascript - 'let' vs javascript for 循环中的 'var',这是否意味着所有使用 'var i =0' 的 for 循环实际上应该是 'let i =0'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32313961/