1

考虑到这一点:

var getToDaChoppa = false;

var warIsHell = function() {
    // Write your do/while loop here!
    do {
        console.log("I can't my legs omg my LEGS");
    } while (getToDaChoppa);
};

warIsHell();

和这个

var getToDaChoppa = function() {
    var getToDaChoppa = false;
    do {
        console.log("I can't my legs omg my LEGS");
    } while (getToDaChoppa);
};

getToDaChoppa();

我真的很想知道从技术角度来看哪一段代码更好。(降低内存使用、垃圾生成等)。我对 js 非常熟悉,但我想确保我正在编写最好的代码。

根据我有限的经验,第二个片段会比第一个产生双倍的垃圾,但另一方面,第一个片段使用的内存是第二个片段的两倍,所以我想知道这里最好的方法是什么。Ofc 如果您需要调整变量值,¿我了解第一个更通用?但我无法完全理解这两种方法的优缺点。

任何一点解释都会有很大帮助o:)

4

2 回答 2

0

我想说第二种方法更好,因为您将条件变量保留在函数范围内,因此不会污染全局范围。

另外,不要用与函数相同的名称来命名变量。

于 2013-10-10T07:13:58.800 回答
0

我看到你的两个函数之间的主要区别是第一个使用全局(或至少是外部)变量,而第二个使用局部变量。

然后规则很简单:如果您不在该范围内使用变量,请不要在该范围内声明变量。始终在最内部的范围内声明您的变量。这使代码更具可读性并限制了碰撞的风险。试图通过将垃圾变为外部来减少垃圾是一种糟糕的做法,而且毫无用处,除非在一个非常具体的情况下,您通过分析证明您有问题并且以这种方式解决(然后......我可能不会相信你...... .)。

第二条规则是:如果可能,不要隐藏变量。用布尔变量隐藏函数的名称是非常令人困惑的。

这是一个“固定”代码:

var getToDaChoppa = function() {
    var finished = false;
    do {
        // some code, which hopefully will at some point set finished to true 
    } while (!finished); // you wanted a !, here, no ?
};
getToDaChoppa();
于 2013-10-10T07:13:18.280 回答