让vs var表现

时间:2016-05-04 00:20:16

标签: javascript ecmascript-6

我一直在阅读ES6 Let关键字与现有的var关键字。

我几乎没有问题。我理解“范围”是let和var之间唯一的区别,但它对大局意味着什么呢?

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
};

现在我的问题:

  1. 与var相比,let是否具有任何内存(/性能)优势?

  2. 除浏览器支持外,我应该使用let over var的原因是什么?

  3. 在我的代码工作流程中开始使用let now over var是否安全?

  4. 谢谢, [R

1 个答案:

答案 0 :(得分:5)

let比node.js中的var慢得多。版本v6.3.0无论如何。有时这是戏剧性的。如果用let替换var,下面的代码大约慢三倍:

function collatz() {
    var maxsteps = 0;
    var maxval = 0;

    var x = 1;
    var n;
    var steps;

    while (x < 1000000) {
        steps = 0;
        n = x;
        while (n > 1) {
            if (n & 1)
                n = 3*n + 1;
            else
                n = n / 2;
            steps += 1;
        }
        if (steps > maxsteps) {
            maxsteps = steps;
            maxval = x;
        }
        x += 1;
    }
    console.log(maxval + ' - ' + maxsteps + ' steps');
}

collatz();