在JavaScript中增加变量的其他方法

时间:2011-07-06 09:37:49

标签: javascript

  

可能重复:
  Why avoid increment (“++”) and decrement (“--”) operators in JavaScript?

我是道格拉斯·克罗克福德及其优秀着作JavaScript: The Good Parts的忠实粉丝。我还在每小时使用他的JSLint工具,然后检查我们的存储库中的任何代码,这是很有道理的。

我在通过JSLint运行代码时注意到的一件事是它坚持认为++增量运算符在某种程度上是邪恶的。我知道我可以取消某些规则,但这是作弊行为;)。 Crockford在JS的第112页提到他不喜欢:TGP ......

  

在我自己的实践中,我观察到当我使用++和 - 时,我的代码往往太紧,太棘手,太神秘。所以,作为纪律问题,我不再使用它们了。我认为结果是,我的编码风格变得更加清晰。

这一切都非常可爱,但他没有提供他现在编码方式的任何例子。我假设他正在做类似......

var i;
i = 0;
i = i + 1;

再次,很好,但我的JS代码中有一些基本的“for循环”,正如我想象的那样,我总是使用标准语法......

for (i = 0; i < myArray.length; i++) { 
    // Loop Stuff 
}

我错过了什么吗?什么是最简洁和/或最好的增量/减量方法?

6 个答案:

答案 0 :(得分:14)

我认为这是相当有争议的,我个人坚持i++循环。在cource中,您可以在循环语句中将其替换为i = i + 1,以完全符合JSLint。

在JavaScript中增加和减少数值没有真正的替代方法。您通常可以使用Array.forEach()和/或Object.keys()来阻止数字索引。

答案 1 :(得分:4)

我在autoincrement / decrement运算符中看到的唯一棘手的事情(我很惊讶,这里没有人指出这一点)是前缀(++ i)和后缀(i ++)版本之间的区别。我也相信自动增量/减量运算符通常会稍微提高效率。除此之外,我认为选择主要基于美学,特别是在javascript中。

答案 2 :(得分:3)

传递JSLint我现在总是这样做:

for (var i = 0; i < myArray.length; i+=1) { 
    // Loop Stuff 
}

答案 3 :(得分:0)

在C / C ++中,这很重要,特别是对于任意迭代器和前/后增量语义。此外,随机访问与前向迭代器。

在Javascript中,它更多地是关于美学而不是其他任何东西。除非你正在处理字符串。 "1"+1是“11”。

我会说++我是一个值得与之相符的习语。

JSLint错了。

答案 4 :(得分:0)

就个人而言,我认为++ / - 运算符没有增加和减少的错误。虽然i = i + 1;之类的东西对于新编码员来说可能更容易,但一旦你知道操作员的意思,这种做法就不是火箭科学。

答案 5 :(得分:0)

关于循环,一个原创的想法可以使用这样的循环来避免各种数字:

var a = [];
for (var i in "     ")
    a.push("Loop iteration here");
alert(a.join("\n"));

迭代遍历字符串,迭代次数将等于字符串长度 - 在上例中为5。

实时测试案例:http://jsfiddle.net/vTFDP/