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 這段類似代碼就好理解了。

 

如果我解決了您的疑問,點個贊,打賞一下,您的打賞是我爲以後寫出更優秀的博客的動力!謝謝。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章