Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
i++;与++;我在JavaScript for循环中_Javascript_For Loop_Post Increment_Pre Increment - Fatal编程技术网

i++;与++;我在JavaScript for循环中

i++;与++;我在JavaScript for循环中,javascript,for-loop,post-increment,pre-increment,Javascript,For Loop,Post Increment,Pre Increment,由于JSLint,我几乎总是使用I++=1来增加JavaScript for循环,但是对于快速和肮脏的脚本,我使用I++。 然而,我在其他人的代码中看到了很多for循环,他们通过执行++I来增加I 据我所知,I++和++I在含义上没有区别,而jsPref在性能上也没有区别。 因此,我想知道做++I的惯例从何而来,以及为什么人们倾向于这样做 有人知道为什么很多JS程序员在增加for循环中的计数器时倾向于选择++i而不是i++ 谢谢。在for循环中使用时会有所不同 在表达式中,i++计算为i的上一个

由于JSLint,我几乎总是使用
I++=1
来增加JavaScript for循环,但是对于快速和肮脏的脚本,我使用
I++

然而,我在其他人的代码中看到了很多for循环,他们通过执行
++I
来增加
I

据我所知,
I++
++I
在含义上没有区别,而jsPref在性能上也没有区别。
因此,我想知道做
++I
的惯例从何而来,以及为什么人们倾向于这样做

有人知道为什么很多JS程序员在增加for循环中的计数器时倾向于选择
++i
而不是
i++
谢谢。

在for循环中使用时会有所不同

在表达式中,
i++
计算为
i
的上一个值,然后
i
递增<代码>++i首先递增,然后求值

出于这个原因,一些程序员更喜欢在For循环中编写
++i
——要么是因为他们已经习惯了,要么是因为他们觉得它“更正确”


编辑:更可能的解决方案是OVEV提出的:C的残余。

区别在于
i++
在递增之前返回
i
的值,在递增之后返回
i
的值。如果忽略返回值,则没有区别,例如:

for (var i = 0; i < 10; i++) {

}
for(变量i=0;i<10;i++){
}

使用
++i
而不是
i++
的习惯来自C语言,在C语言中,人们担心将
i
的旧值存储在
i++
中会导致性能损失。

在JS和PHP中没有任何区别,我认为,即使在Java中,它也没有任何区别,但在纯c中,当编译器不优化代码时,它会这样做,这就是为什么许多人使用++I,因为他们习惯于从c开始使用它

编辑: 这是一个JS的答案,如果您想了解增量前和增量后的历史记录,请参阅C/C++增量前/增量后。或者查看@Orvev答案的评论。

早在那天(我们这里讨论的是IE6/7!),我回忆起对这两种形式的基准测试,发现使用
++I
而不是
I++
有一点性能改进。我(未经证实)的理论是,在
i++
的情况下,非优化JS引擎必须多做一点工作:它必须保存以前的值,以防被使用——而作为非优化引擎,它没有意识到该值实际上不会被使用,也不需要保存

然而,与现代浏览器没有明显的区别。如果说有什么不同的话,
i++
在许多浏览器中似乎要快一点

以下是各种不同回路的一些测试:

查找“传统循环”(使用
++i
)和“使用i++的传统循环”的结果

关于JSLint要求永远不要使用
++i
i++
,而只使用
i++=1
,这简直是疯狂和过度控制,就像JSLint中的许多其他东西一样


我个人建议改为。它不那么教条,更实用,更容易根据您自己的风格进行定制。

这完全无关紧要,递增部分在代码块之后执行,然后重新评估条件。因此,无论i++或++返回什么,我都没有效果。。然而,我过去知道是什么驱使大家使用++i。。这是来自其他语言的一些性能提示。基本上,我的想法是i++效率较低,因为它导致在内存中创建副本。返回的一个和增加的原始一个。然而,++我的意思是只增加原始的一个,然后返回它……但是,对于更智能的编译器,这是一个不存在问题的问题。显然,考虑到他用
post increment
pre increment
:)标记了帖子是的,我知道变量递增之前和递增之后的区别,但我特别询问了for循环。另外,我知道没有区别,我只是想知道为什么人们倾向于做
++I
。谢谢。啊,对不起。我认为这仅仅是因为他们习惯了它,因为他们通常预先增加,或者因为他们觉得它“更正确”。我应该删除我的答案吗?不需要删除你的答案。我更想知道的是,是否还有其他一些语言的
++I
更为常见,因此来自这些语言的程序员更喜欢这种符号或其他东西。是的,我知道递增前后的区别。这不是问题所在。我更想问的是
++I
惯例从何而来。@HartleySan在答案中补充了这一点。这是我一直在寻找的答案,你第一次说出来,我不必发表评论。因此,我会尽快将这个答案标记为正确的。@HartleySan将不太完整的答案标记为正确的奇怪原因。很好的答案。谢谢。这确实是一个很棒的:)我不知道这一个。