韓老師講到:
<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--“”,此時(shí)c的值也是0,為什麼a的值就變?yōu)?了呢?
望各位老師解答一下,謝謝!
--c 是先進(jìn)行運(yùn)算,後賦值給c ,也就是先斬後奏,當(dāng)你殺他那時(shí)皇上還不知道,還認(rèn)為他還沒(méi)死,所以c還是原來(lái)的c,後來(lái)稟報(bào)後才知道,他已經(jīng)死了,這時(shí)c減了一。
而c-- 是減去後就賦值給c了,當(dāng)時(shí)c就少一,也就是皇帝親自監(jiān)斬。
對(duì)於--c時(shí)
a < b? ?true
--c? ?c先自減? ?c=0? ? false(0為假非0為真)? ?
###################################################### #a<b&&--c? ? ?false然後就會(huì)觸發(fā)&&的「短路」不執(zhí)行++a######所有c=0,a=3######對(duì)於c--##### #a < b? ?true######c--? c先判斷真假再自減? ?所有判斷時(shí)c=1 為true? ?然後c自減######a<b&&--c? ? ?true 不會(huì)觸發(fā)&&的"短路"? ?執(zhí)行並判斷++a######所以c=0,a=4###--c時(shí),表達(dá)式左邊為false,右邊++a不進(jìn)行運(yùn)算,所以a的值還是3
c++時(shí),表達(dá)式左邊為true,所以右邊++a還要進(jìn)行運(yùn)算,所以a的值變成4
<script type=text/javascript>
var a = 3;
var b = 4;
var c = 1;
#if ( a < b && c-- && ++a);//此時(shí)c的值也是0了,應(yīng)該也為假,++a就應(yīng)該不進(jìn)行運(yùn)算了,那麼a的值應(yīng)該還是3才對(duì),為什麼會(huì)進(jìn)行計(jì)算了呢?
{
window.alert("OK")
}
window.alert(c) ?// c = 0
#window.alert(a) ?// a =3