首頁  >  問答  >  主體

javascript - z=z=z++裡的執行過程

var z = 0;
z=z=z++;
alert(z);

彈跳窗是0,為什麼?

var z = 0;
z++;z=z;
alert(z);

的區別?

滿天的星座滿天的星座2662 天前962

全部回覆(6)我來回復

  • 高洛峰

    高洛峰2017-07-05 10:52:36

    好奇你這是為了做題還是你在哪個開源專案的程式碼中看到過作者使用這樣的書寫方式, 如果是為了做題或筆試, 建議不要考慮這樣的學校或公司. 因為此題毫無意義, swift3甚至去掉了++運算子, 人生短暫, 把時間浪費在讓人confusing或容易出錯的語法特性上不值.

    回覆
    0
  • 大家讲道理

    大家讲道理2017-07-05 10:52:36

    兩點:

    1. a = a++ 先賦值,後自增

    2. 賦值表達式是有回傳值的,簡稱為表達式的值

    z=z=z++; 

    相當於將“z=z++”表達式的值賦值給z,而“z=z++”的值等於“z++”,“z++”先使用z當前值,後自增

    回覆
    0
  • 给我你的怀抱

    给我你的怀抱2017-07-05 10:52:36

    後置自增:
    n++這樣的表達式會傳回一個n原始值的副本,然後將n原始值++
    n = n++ 後置自增運算符的優先權高於賦值
    所以=右側會先將n自增並回傳n的原始值副本
    然後進行賦值運算將n的原始值賦值給n,所以n的值不變

    回覆
    0
  • 阿神

    阿神2017-07-05 10:52:36

    z++是個表達式,表達式的結果還是z,所以z=z++相當於z=z 啥也沒做,
    你要了解下++z++ 啥也沒做,

    你要了解下++

    z++ 的邏輯是先返回變數值,然後才自增。

    或你用🎜++z🎜,前自增是先自增,然後回傳自增後的結果🎜

    回覆
    0
  • 我想大声告诉你

    我想大声告诉你2017-07-05 10:52:36

    等價於

    a=z++;
    z=a;
    z=z;

    回覆
    0
  • 阿神

    阿神2017-07-05 10:52:36

    ++ 和= 運算順序的問題 建議看一下 運算 賦值的優先權

    回覆
    0
  • 取消回覆