新人可能弄不明白++i和i++的区别,其实很简单,这两个都是自增运算符,区别在于:
++i表示,i自增1后再参与其它运算;而i++ 则是i参与运算后,i的值再自增1。
举个梨子:
let i, j, k;
i = 1
j = ++i
i = 1
k = i++
console.log(i) // 2
console.log(j) // 2
console.log(k) // 1
这里计算前将i设为1,计算j时,先对i进行自增,再赋值给j;计算k时,先赋值给k,再对i自增。记忆也很容易,++在前面就先自增,在后面就先赋值。
大多数场景下,两者并无差别,有说法是++i的效率是大于i++,但这点效率其实无关紧要。一般的习惯是用i++,比较符合人的直觉。
至于i+++j这种面试题,那就是运算符优先级的问题了。