4 回答

TA貢獻(xiàn)1816條經(jīng)驗(yàn) 獲得超4個(gè)贊
你真正的問題似乎是:
為什么:
null >= 0; // true
但:
null == 0; // false
真正發(fā)生的是,大于或等于的Operator (>=
)執(zhí)行類型強(qiáng)制(ToPrimitive
),具有提示類型Number
,實(shí)際上所有關(guān)系運(yùn)算符都具有此行為。
null
由Equals Operator(==
)以特殊方式處理。在簡短的,它只強(qiáng)制轉(zhuǎn)換到undefined
:
null == null; // truenull == undefined; // true
值,例如false
,''
,'0'
,和[]
受數(shù)字類型強(qiáng)制,它們都強(qiáng)迫到零。
您可以在抽象等式比較算法和抽象關(guān)系比較算法中看到此過程的內(nèi)部細(xì)節(jié)。
綜上所述:
關(guān)系比較:如果兩個(gè)值都不是類型String,
ToNumber
則同時(shí)調(diào)用它們。這與+
在前面添加a相同,對于null強(qiáng)制執(zhí)行0
。平等比較:只調(diào)用
ToNumber
字符串,數(shù)字和布爾值。

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊
我想擴(kuò)展這個(gè)問題,以進(jìn)一步提高問題的可見性:
null >= 0; //true
null <= 0; //true
null == 0; //false
null > 0; //false
null < 0; //false
這沒有任何意義。像人類語言一樣,這些東西需要用心學(xué)習(xí)。

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超9個(gè)贊
我有同樣的問題 ??!。目前我唯一的解決方案是分開。
var a = null;
var b = undefined;
if (a===0||a>0){ } //return false !work!
if (b===0||b>0){ } //return false !work!
//but
if (a>=0){ } //return true !
添加回答
舉報(bào)