赋值和变量的自增问题

vari=1;
i=i++;
alert(i);
为什么i=1?
1.左边i先赋值给右边,i=1;
2.i++,之后i不就是2了吗?就算不赋值,也应该是2额。。
萧十郎
浏览 320回答 2
2回答

慕田峪7331174

首先,赋值运算符=是把右边的值赋给左边。然后,自增运算符“++”放在变量后面即i++的意思是先使用变量,再将变量i的值加1。如果放在变量前面即++i的意思是先将变量i的值加1,再使用变量举例:vari=1;varj=i++;alert(j);//1,先为j赋i的值1,alert(i);//2,然后执行++,i的值加1,2那么为什么你的代码结果i是1呢?vari=1;i=i++;alert(i);//1这是因为js中,变量的值是不能重新赋值的。重新为一个变量赋值,会申请一个新变量,为其赋值并销毁原来的变量。本例中,i=i++其实是先在内存中申请一个空间,里面填充1(i的值),然后让变量i指向这块内存空间,而存放这i++得来的2的那块内存,已经索引不到了,一会儿其所占内存就被回收了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript