JS、JAVA、PHP中a=a++值为什么没有改变?解析

      作为程序猿,都应该知道的基础知识 :

                a++是先执行表达式后再自增,执行表达式时使用的是a的原值。
                ++a是先自增再执行表达示,执行表达式时使用的是自增后的a。

但在JS、JAVA、PHP中就那么简单吗?

1. JS 

 

2. JAVA

3. PHP

凭借自己所学,在不测试的情况下,你能给出答案吗?


   第一次看见这个问题的时候,想当然的认为答案是:10。但残酷的事实告诉我,答案是:1。当时面对这个结果我是无法接受的,网上疯狂搜索这个答案的解释。但是没有很容易理解的解释,我就根据自己的知识水平,重新推导这个过程。

 

首先拿JS举例

右边很直观的告诉我们结果为1.但是这段代码只告诉我们结果,并没有解释原因。why?

下面我们推倒一下,上面代码执行的顺序:

1) a=a++可以拆分为 var b = a++、a=b;因为++比=运算级别高。

2)a++ 是先取值后自增的,所以b=1, 这个时候a=a+1 => a= 2。

3)执行a=b运算,a=1。

4)所以无论经过多少次循环,a恒等于1。

没毛病。

 

这个问题解决了,那么JAVA、PHP 这段类似代码就好理解了。

 

如果我解决了您的疑问,点个赞,打赏一下,您的打赏是我为以后写出更优秀的博客的动力!谢谢。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值