平时都是这样写的for循环,
但我看有的人这样写
平时都是这样写的for循环,
但我看有的人这样写
但是用在赋值的时候,就有区别了...
a++ 是先应用a,然后再自加
++a 是先自加,然后在应用a
至于具体细节,规范里面关于自增/自减运算符是这么写的:
对于放在前面的情况——
大致翻译一下:
1.令expr等于当前表达式(就是++后面的部分)的结果
2.令oldValue等于expr转换为数字的结果
3.使用和“+”运算符一样的规则,令newValue = oldValue + 1
4.将newValue赋值给expr
5.整个运算式返回newValue
对于放在后面的情况——
PostfixExpression : LeftHandSideExpression ++
1.Let lhs be the result of evaluating LeftHandSideExpression.
2.Let oldValue be ToNumber(GetValue(lhs)).
3.ReturnIfAbrupt(oldValue).
4.Let newValue be the result of adding the value 1 to oldValue,using the same rules as for the + operator (see 12.7.5).
5.Let status be PutValue(lhs,newValue).
6.ReturnIfAbrupt(status).
7.Return oldValue.
大致翻译——
1.令lhs等于当前表达式(++前面的部分)的结果
2.令oldValue等于lhs转换为数字的结果
3.使用和“+”运算符一样的规则,令newValue = oldValue + 1
4.将newValue赋值给lhs
5.整个运算式返回oldValue
可以看到,这两者的的区别只是最后一步,整个运算式是返回加一后的还是加一前的。
对于for语句而言:
最后一栏仅仅是自加,并没有把这个值赋值给谁,所以从这一点来看,++符号放在前面或者是后面都是一样的。
确实是从c++的std标准库而来,当i是一个std容器的iterator时,i不是一个数字,i++会多产生一个赋值操作,因此++i性能更高。所以c++习惯的人,在i不是数值时,喜欢用++i来节省开销。
以上所述是小编给大家介绍的JS for循环中i++ 和 ++i的区别介绍。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。