javascript - z=z=z++里的執(zhí)行過(guò)程
問(wèn)題描述
var z = 0;z=z=z++;alert(z);
彈窗是0,為什么?
跟
var z = 0;z++;z=z;alert(z);
的區(qū)別?
問(wèn)題解答
回答1:好奇你這是為了做題還是你在哪個(gè)開(kāi)源項(xiàng)目的代碼中看到過(guò)作者使用這樣的書(shū)寫(xiě)方式, 如果是為了做題或筆試, 建議不要考慮這樣的學(xué)校或公司. 因?yàn)榇祟}毫無(wú)意義, swift3甚至去掉了++操作符, 人生短暫, 把時(shí)間浪費(fèi)在讓人confusing或容易出錯(cuò)的語(yǔ)法特性上不值.
回答2:兩個(gè)點(diǎn):
a = a++ 先賦值,后自增
賦值表達(dá)式是有返回值的,簡(jiǎn)稱(chēng)為表達(dá)式的值
z=z=z++;
相當(dāng)于將「z=z++」表達(dá)式的值賦值給z,而「z=z++」的值等于「z++」,「z++」先使用z當(dāng)前值,后自增
回答3:后置自增:n++這樣的表達(dá)式會(huì)返回一個(gè)n原始值的副本,然后將n原始值++n = n++ 后置自增運(yùn)算符的優(yōu)先級(jí)高于賦值所以=右側(cè)會(huì)先將n自增并返回n的原始值副本然后進(jìn)行賦值操作 將n的原始值賦值給n,所以n的值不變
回答4:z++是個(gè)表達(dá)式,表達(dá)式的結(jié)果還是z,所以 z=z++相當(dāng)于z=z 啥也沒(méi)做,你要了解下 z++的邏輯是先返回變量的值,然后才自增。
或者你用++z,前自增是先自增,然后返回自增后的結(jié)果
回答5:等價(jià)于
a=z++;z=a;z=z;回答6:
++ 和= 運(yùn)算順序的問(wèn)題 建議看一下 運(yùn)算 賦值的優(yōu)先級(jí)
相關(guān)文章:
1. mysql - 分庫(kù)分表、分區(qū)、讀寫(xiě)分離 這些都是用在什么場(chǎng)景下 ,會(huì)帶來(lái)哪些效率或者其他方面的好處2. mysql - 這個(gè)數(shù)據(jù)庫(kù)合計(jì)用 視圖做,和直接算好存在數(shù)據(jù)庫(kù)里,到時(shí)候調(diào)用起來(lái)哪個(gè)快?3. python - 在django內(nèi)如何讓后臺(tái)增加的文章自動(dòng)加上是哪個(gè)用戶(hù)編輯的呢?4. centos7 編譯安裝 Python 3.5.1 失敗5. 如何修改phpstudy的phpmyadmin放到其他地方6. javascript - vue-echarts-v3使用的過(guò)程中折線圖區(qū)域呈漸變色。7. 人工智能 - python 機(jī)器學(xué)習(xí) 醫(yī)療數(shù)據(jù) 怎么學(xué)8. 關(guān)于Mysql聯(lián)合查詢(xún)9. pip安裝提示Twisted錯(cuò)誤問(wèn)題(Python3.6.4安裝Twisted錯(cuò)誤)10. c++ - 請(qǐng)問(wèn)MySQL_Connection::isReadOnly 怎么解決?
