亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

今天在手機上看到的一個問題,為什么結果是這樣?

今天在手機上看到的一個問題,為什么結果是這樣?

GCT1015 2023-04-14 19:15:37
null==0 //falsenull>0 //falsenull<0 //falsenull>=0 //true
查看完整描述

2 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

js是遵從ECMAScript規范的,出現上面問題的原因是因為關系運算符會脅迫類型轉換。

首先要明確一點,typeof(null)=='object'。然后問題分兩部分回答吧,先說false的三個:

null==0 //falsenull>0 //falsenull<0 //false

在x與y之間使用= =時,會判斷“如果x為object,y為字符串或數字”的情況,這時候會返回ToPrimitive(x) = =y,也就是ToPrimitive(null)==0,null會根據輸入的參數0(Number)轉換為原始值,這時候是null轉化為undefined,>號與<號的轉換情況也是一樣的,因此出現了false。

undefined==0//falseundefined>0//falseundefined<0//false

true的情況則是null在>=時,通過GetBase和GetPropertyName轉換為了0,因此

0>=0//true

這些東西其實挺糾結的說,還是得看ECMAScript的規則。


查看完整回答
反對 回復 2023-04-17
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

1. 關系運算符 和 相等運算符 并個類別的

2. 關系運算符,在設計上,總是需要運算元嘗試轉為一個number . 而相等運算符在設計上,則沒有這方面的考慮

3. 最重要的一點, 不要把 拿 a > b , a == b 的結果 想當然的去和 a >= b 建立聯系. 正確的符合最初設計思想的關系是 a > b 與 a >= b是一組。a == b 和其他相等運算符才是一組. 比如

a === b , a != b, a !== b
null > 0 //  null 嘗試轉型為number , 則為0 . 所以結果為 false, 
null >= 0 //  null 嘗試轉為number ,則為0 , 結果為 true. 
null == 0 // null在設計上,在此處不嘗試轉型. 所以 結果為false.


查看完整回答
反對 回復 2023-04-17
  • 2 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號