把mynum=mynum-1换成mynum=mynum--系统就会崩溃
这里出现无限循环,是因为这是一个自己等于自己副本的赋值方式,
原来带后置型递增(减)符的变量是在包含它的语句被求值之后才去执行,
这里语句i=i++,语句被求值刚好是i,被求值i出来后,i的运算就已经执行完毕,后面的递增(减)执行直接被跳过了;
i在下一次循环中开始时候,值没有变化,就不能跳出循环。
还有你把--a,b--改写成a=--a,b=b--试试,不一样的
一次运算可能i++没有意义但是要是循环就有意义了,就被赋值了
这个6啊,系统真的崩溃了
在javascript中遇到这2个家伙之后一直无法理解
在百度查阅了很多文章
大致上都是说可以分开看成如下:
i=i++ 等于(i=i;i=i+1)意识是先赋值 在做运算
i=++I 等于(i=i+1;i=i)意识是做运算 在赋值
我一直无法理解的地方在于这句话“意识是先赋值 在做运算”
这里的运算不也是赋值吗 “=”就是赋值的意识啊 百度查阅到的文章大都是这样分开为(i=i;i=i+1)(i=i+1;i=i)但是在我的学习中我100%确定“=”就是赋值 所以大家的表示方式是错误的。
i=i++意识是先把i的值赋给i 在做运算+1 但是没有赋值 这个运算我理解为毫无意义
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>do...while</title> <script type="text/javascript"> var a =6;//mynum初值化数值为6 var b =6; --a; b--; document.write("a="+a+"<br/>"); document.write("b="+b); </script> </head> <body> </body> </html> 结果都一样的啊
mynum--相当于mynum=mynum-1,当你把代码写成mynum=mynum--时,编译时可以认为是
mynum=mynum=mynum-1 这样是没办法编译通过的。
mynum--;