javascript - 'let' vs javascript for 循环中的 'var',这是否意味着所有使用 'var i =0' 的 for 循环实际上应该是 'let i =0'?

标签 javascript

因为根据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。它将使您的变量成为常量,因此一旦您设置了它们的值,您将无法改变它们,因此它不适用于所有情况。 constlet 在范围方面也比 var 有优势,值得一读。我的使用层次结构是这样的 const > let > var

关于javascript - 'let' vs javascript for 循环中的 'var',这是否意味着所有使用 'var i =0' 的 for 循环实际上应该是 'let i =0'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32313961/

相关文章:

javascript - Jquery 删除追加后的元素

javascript - 在不可绑定(bind)元素内使用 Angular 数据绑定(bind)和指令

JavaScript效率: big object vs many arrays

javascript - canvas getImageData 函数在 Chrome 中抛出异常

javascript - 如何使用链接相同的功能到不同的元素?

javascript - 如何从对象内部访问 vuejs 方法? (Vuejs 2)

javascript - jquery 将鼠标悬停在陷入无限循环的元素上/开始闪烁元素

javascript - 性能——我应该同时使用数组和对象来处理巨大的列表吗?

javascript - 物化 chop 不适用于卡片

javascript - JsFiddle:Library "Load Type"是指该库还是我的代码?