发表于: 2019-12-15 22:01:03
1 1288
今日完成:
遇到问题:
描述:即便把变量var aaa=0调出函数,变成全局变量,还是只能写一次
再次查看a++与++a的区别
a++是运算后自增,而++a是先自增在运算(即++a 先自加再取值,a++先取值在自加)
相同点:
a++和++a中, i的值自增1,也就是a=a+1;
不同点:
a++ : 把(a++)作为一个整体表达式,a 的值虽然自增1,但是整个表达式的值是取 a自增 之前 的值;
++a : 也把(++a)作为一个整体表达式,a 的值也自增1,但是整个表达式的值是取 a 自增 之后 的值。
看实例:
m=a++ 相当于 m=a,a=a+1
m=++a 相当于 a=a+1,m=a 这种自加运算和自减运算,都相当于两步骤
总结: a++ 是先把 a 赋值,然后自己加一, ++a,是先自己加一,然后再把 a 赋值。
总结(原因):
1.a++和++a本身就代表了一个表达式,效果和a=a+1效果相同,即两个表达式写出来之后,a的值都已经加1了
2.它们不同的点,是给其他变量赋值的时候,如上,m=a++这个表达式,a的值已经是a=a+1了,赋予的值是a改变之前的值,
结合自己的代码:var aaa=0,我提到全局变量,已经不会影响函数里面了,
但是函数内部还有个表达式aaa=aaa++,套之前的表达式相当于:aaa=aaa,aaa=aaa+1,声明了aaa=0,即:这里aaa的值是1,但是aaa++的值还是0,
所以点击函数,在运转,又重新运转aaa=aaa++,即aaa=0,(重置效果),陷入错误循环
解决:
直接在代码的结尾写上aaa++,或者++aaa或者单独使用,它们代表的含义,aaa=aaa+1,都是可以的,
至于序号是从1开始,而不是数组索引值从零开始,直接在输出序号时添加aaa+1就可以了
遇到问题:a++和++a的理解错误,设置的函数,运行了一个错误的循环
收获:关于a++和++a认知更加明确
明日计划:继续js2-4
评论