var z = 0;
z=z=z++;
alert(z);
彈跳窗是0,為什麼?
跟
var z = 0;
z++;z=z;
alert(z);
的區別?
高洛峰2017-07-05 10:52:36
好奇你這是為了做題還是你在哪個開源專案的程式碼中看到過作者使用這樣的書寫方式, 如果是為了做題或筆試, 建議不要考慮這樣的學校或公司. 因為此題毫無意義, swift3甚至去掉了++運算子, 人生短暫, 把時間浪費在讓人confusing或容易出錯的語法特性上不值.
大家讲道理2017-07-05 10:52:36
兩點:
a = a++ 先賦值,後自增
賦值表達式是有回傳值的,簡稱為表達式的值
z=z=z++;
相當於將“z=z++”表達式的值賦值給z,而“z=z++”的值等於“z++”,“z++”先使用z當前值,後自增
给我你的怀抱2017-07-05 10:52:36
後置自增:
n++這樣的表達式會傳回一個n原始值的副本,然後將n原始值++
n = n++ 後置自增運算符的優先權高於賦值
所以=右側會先將n自增並回傳n的原始值副本
然後進行賦值運算將n的原始值賦值給n,所以n的值不變
阿神2017-07-05 10:52:36
z++
是個表達式,表達式的結果還是z
,所以z=z++
相當於z=z
啥也沒做,
你要了解下++z++
啥也沒做,
z++ 的邏輯是先返回變數值,然後才自增。