首頁  >  問答  >  主體

在javascript的邏輯運算中,關於--c和c--的一個小問題.

韓老師講到:

<script type=text/javascript>

var a = 3;

var b = 4;

#var c = 1;

if ( a < b && --c && a)

{

window.alert("OK")

}

window.alert(c)  // c = 0

window.alert(a)  // a =3

那假若把「--c ”變成“c--“”,此時c的值也是0,為什麼a的值就變為4了呢?

望各位老師解答一下,謝謝!

正歌正歌2369 天前1619

全部回覆(5)我來回復

  • 一切近乎完美

    一切近乎完美2018-03-28 15:24:52

    --c 是先進行運算,後賦值給c ,也就是先斬後奏,當你殺他那時皇上還不知道,還認為他還沒死,所以c還是原來的c,後來禀報後才知道,他已經死了,這時c減了一。

    而c-- 是減去後就賦值給c了,當時c就少一,也就是皇帝親自監斬。


    回覆
    1
  •  

     2018-03-27 10:57:45

    對於--c時

    a < b   true

    --c   c先自減   c=0    false(0為假非0為真)   

    ###################################################### #a<b&&--c     false然後就會觸發&&的「短路」不執行++a######所有c=0,a=3######對於c--##### #a < b   true######c--  c先判斷真假再自減   所有判斷時c=1 為true   然後c自減######a<b&&--c     true 不會觸發&&的"短路"   執行並判斷++a######所以c=0,a=4###

    回覆
    1
  • 正歌

    謝謝,我想明白了.

    正歌 · 2018-03-27 11:08:21
  • 一生何求

    一生何求2018-03-26 21:13:25

    --c時,表達式左邊為false,右邊++a不進行運算,所以a的值還是3

    c++時,表達式左邊為true,所以右邊++a還要進行運算,所以a的值變成4

    回覆
    2
  • 正歌

    正歌2018-03-26 19:48:14

    <script type=text/javascript>

    var a = 3;

    var b = 4;

    var c = 1;

    #if ( a < b && c-- && ++a);//此時c的值也是0了,應該也為假,++a就應該不進行運算了,那麼a的值應該還是3才對,為什麼會進行計算了呢?

    {

    window.alert("OK")

    }

    window.alert(c)  // c = 0

    #window.alert(a)  // a =3


    回覆
    0
  • 取消回覆