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

在JavaScript中增加变量的其他方法,javascript,Javascript,可能重复: 我是道格拉斯·克罗克福德及其优秀著作的忠实粉丝。在将任何代码签入到我们的存储库之前,我也会每小时使用他的工具,这是很有道理的 在通过JSLint运行代码时,我注意到的一点是,它坚持认为++增量运算符在某种程度上是邪恶的。我知道我可以关闭某些规则,但那是作弊;)。Crockford在JS:TGP的第112页提到了他的不喜欢 在我自己的实践中,我观察到,当我使用++和-,我的代码往往过于紧凑,过于复杂,过于神秘。所以,作为一个纪律问题,我不再使用它们了。因此,我认为我的编码风格变得更加

可能重复:

我是道格拉斯·克罗克福德及其优秀著作的忠实粉丝。在将任何代码签入到我们的存储库之前,我也会每小时使用他的工具,这是很有道理的

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

在我自己的实践中,我观察到,当我使用++和-,我的代码往往过于紧凑,过于复杂,过于神秘。所以,作为一个纪律问题,我不再使用它们了。因此,我认为我的编码风格变得更加清晰

这一切都很可爱,但他没有给出任何他现在编码方式的例子。我猜他在做一些类似

var i;
i = 0;
i = i + 1;
同样,很好,但是我在我的JS代码中有一些基本的“for循环”,就像我想象中的很多人一样,我一直使用标准语法

for (i = 0; i < myArray.length; i++) { 
    // Loop Stuff 
}
(i=0;i //循环材料 }
我错过什么了吗?什么是最干净和/或最好的递增/递减方式?

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


在JavaScript中,除了递增和递减数值,没有真正的替代方法。通常可以使用
Array.forEach()
和/或
Object.keys()
来防止数值索引。

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

在Javascript中,它更多地是关于美学的。除非你在处理字符串<代码>“1”+1为“11”

我想说,++I是一个值得遵循的习惯用法


JSLint是错误的。

要通过JSLint,我现在总是这样做:

for (var i = 0; i < myArray.length; i+=1) { 
    // Loop Stuff 
}
for(var i=0;i
就我个人而言,我看不出+/-运算符的递增和递减有什么错。而像
i=i+1
对于新的程序员来说可能更容易,一旦你知道了操作符代表什么,这种做法就不是火箭科学了。

关于循环,一个原始想法是使用这种循环来避免各种数字:

var a = [];
for (var i in "     ")
    a.push("Loop iteration here");
alert(a.join("\n"));
表示迭代字符串,在上面的示例中,迭代次数等于字符串长度-5


实时测试用例:

我在自动递增/递减运算符中看到的唯一棘手的事情(我很惊讶这里没有人指出这一点)是前缀(++I)和后缀(I++)版本之间的差异。我还认为,一般来说,自动递增/递减运算符的效率稍高一些。除此之外,我认为选择主要基于美学,尤其是javascript。

FWIW,
I+=1
也是一个选项…@gnur-你说得对;我道歉。我在发帖前搜索时错过了这一次。请根据需要删除。我想我在JS中找不到
+=
运算符。或者我遗漏了什么。我更喜欢
I++
而不是
I++=1
,因为它在循环中更惯用。@Talha Ahmed Khan看到原始想法:是的,更可读性:见鬼,不,想象一下当你开始时试图理解这一点。。同意@gnur-非常有创意,但我看不出我们在工作中通过了任何代码审查@毫无疑问,gnur
i++
是可读性最强、效率最高的。但是,由于有些人有奇怪的突发奇想,我的想法就是为了达到这个目的——对奇怪的突发奇想采取奇怪的伎俩。