> javascript 中返回 false?” />
嘿,javascript 粉絲!您是否曾經(jīng)遇到過這樣的時(shí)刻:您的代碼做了一些奇怪的事情,而您卻摸不著頭腦?好吧,今天我給你準(zhǔn)備了一份好東西。
看看這個(gè):
console.log(1 2 > 1); // false
登錄后復(fù)制
等等,什么?第二個(gè)是假的?但是3大于2,2又大于1,對(duì)嗎?那么這里發(fā)生了什么?
讓我們來分解一下:
-
javascript 從左到右讀取這些比較。
對(duì)于 1
首先,它執(zhí)行 1
然后它確實(shí)是
對(duì)于 3 > 2 > 1:
首先,它執(zhí)行 3 > 2。確實(shí)如此。
然后它確實(shí)是 > 1.
現(xiàn)在,重點(diǎn)來了:當(dāng) javascript 將 true 與數(shù)字進(jìn)行比較時(shí),它會(huì)將 true 變成 1。
所以真正發(fā)生的是:
true
true > 1 變成 1 > 1,這是 false.
這就是為什么我們第一個(gè)為真而第二個(gè)為假。
瘋了,對(duì)吧?
那么,我們可以從中學(xué)到什么?當(dāng)你進(jìn)行多重比較時(shí),最好是清楚的。您可以編寫 (3 > 2) && (2 > 1),而不是 3 > 2 > 1。雖然有點(diǎn)長(zhǎng),但至少達(dá)到了你的預(yù)期。