javascript - z=z=z++里的執(zhí)行過程
問題描述
var z = 0;z=z=z++;alert(z);
彈窗是0,為什么?
跟
var z = 0;z++;z=z;alert(z);
的區(qū)別?
問題解答
回答1:好奇你這是為了做題還是你在哪個開源項(xiàng)目的代碼中看到過作者使用這樣的書寫方式, 如果是為了做題或筆試, 建議不要考慮這樣的學(xué)校或公司. 因?yàn)榇祟}毫無意義, swift3甚至去掉了++操作符, 人生短暫, 把時間浪費(fèi)在讓人confusing或容易出錯的語法特性上不值.
回答2:兩個點(diǎn):
a = a++ 先賦值,后自增
賦值表達(dá)式是有返回值的,簡稱為表達(dá)式的值
z=z=z++;
相當(dāng)于將「z=z++」表達(dá)式的值賦值給z,而「z=z++」的值等于「z++」,「z++」先使用z當(dāng)前值,后自增
回答3:后置自增:n++這樣的表達(dá)式會返回一個n原始值的副本,然后將n原始值++n = n++ 后置自增運(yùn)算符的優(yōu)先級高于賦值所以=右側(cè)會先將n自增并返回n的原始值副本然后進(jìn)行賦值操作 將n的原始值賦值給n,所以n的值不變
回答4:z++是個表達(dá)式,表達(dá)式的結(jié)果還是z,所以 z=z++相當(dāng)于z=z 啥也沒做,你要了解下 z++的邏輯是先返回變量的值,然后才自增。
或者你用++z,前自增是先自增,然后返回自增后的結(jié)果
回答5:等價于
a=z++;z=a;z=z;回答6:
++ 和= 運(yùn)算順序的問題 建議看一下 運(yùn)算 賦值的優(yōu)先級
相關(guān)文章:
1. mysql儲存json錯誤2. 在mybatis使用mysql的ON DUPLICATE KEY UPDATE語法實(shí)現(xiàn)存在即更新應(yīng)該使用哪個標(biāo)簽?3. 哭遼 求大佬解答 控制器的join方法怎么轉(zhuǎn)模型方法4. 怎么php怎么通過數(shù)組顯示sql查詢結(jié)果呢,查詢結(jié)果有多條,如圖。5. sql語句 - 如何在mysql中批量添加用戶?6. mysql - 表名稱前綴到底有啥用?7. mysql - 怎么生成這個sql表?8. Navicat for mysql 中以json格式儲存的數(shù)據(jù)存在大量反斜杠,如何去除?9. 編輯成功不顯示彈窗10. mysql - 數(shù)據(jù)庫表中,兩個表互為外鍵參考如何解決
