let i = 1
i = i++
// i++
console.log(i)
此时打印i的值为1
let i = 1
// i = i++
i++
console.log(i)
此时打印i的值为2
第一个代码我的思路 i++先赋值再运算 那么i在运算后还是1 但是i自增 此时不应该是2吗 请教
let i = 1
i = i++
// i++
console.log(i)
此时打印i的值为1
let i = 1
// i = i++
i++
console.log(i)
此时打印i的值为2
第一个代码我的思路 i++先赋值再运算 那么i在运算后还是1 但是i自增 此时不应该是2吗 请教
后置递增,会先返回再自增,即返回自增之前的值
赋值运算符,将它右边操作数的值赋给它左边的操作数
i=i++
此时你右边操作数的值是1,所以i=1
你如果是前置递增,i就会等于2
第一个:
i的值不会发生变化,因为i++是在赋值之后执行的,也就是说,实际上第一步先把i的值赋值给i,然后i的值才会自增1,但由于这两个操作发生在同一时间,因此不会改变i的值。所以最终console.log(i)的结果仍然是1。
第二个:
在这种情况下,console.log(i)的结果就会是2。因为i++是先把i的值自增1,然后再将增加后的值赋值给i,这样就会使i的值变成2,所以最终console.log(i)的结果就是2。
27 回答13k 阅读
8 回答3.5k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
5 回答5.3k 阅读✓ 已解决
4 回答1.6k 阅读✓ 已解决
3 回答1.7k 阅读
4 回答2.3k 阅读✓ 已解决
1.++的优先级比赋值的高,所以先执行i++,i为2
2.然后把i++未执行时候的i再赋值给i,所以i为1