在js中 声明变量i等于1 i等于i++ 打印后结果却是1 为什么?

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吗 请教

阅读 2.3k
5 个回答
1.++的优先级比赋值的高,所以先执行i++,i为2
2.然后把i++未执行时候的i再赋值给i,所以i为1

右表达式为自增表达式,执行两个动作,1.返回i的值(1),2.i进行自增,此时i为2
赋值语句,把右表达式的值赋值给左表达式,右表达式返回的值为1,赋值给左表达式i,结果i为1

后置递增,会先返回再自增,即返回自增之前的值
赋值运算符,将它右边操作数的值赋给它左边的操作数
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。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏