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

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

在JavaScript中,為什么“0”等于false,但是當被‘if’測試時,它本身并不是假的?

在JavaScript中,為什么“0”等于false,但是當被‘if’測試時,它本身并不是假的?

在JavaScript中,為什么“0”等于false,但是當被‘if’測試時,它本身并不是假的?如下所示"0"在Javascript中是假的:>>> "0" == falsetrue>>> false == "0"true那么,為什么下面的打印"ha"?>>> if ("0") console.log("ha")ha
查看完整描述

3 回答

?
繁星coding

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

原因是因為當你明確地"0" == false,雙方都被轉換成數字,并且然后進行比較。

當你這樣做時:if ("0") console.log("ha"),正在測試字符串值。任何非空字符串都是true,而空字符串是false.

相等(=)

如果這兩個操作數是不是同一類型的,JavaScript轉換操作數,然后應用嚴格的比較。如果任一操作數是數字或布爾值,如果可能,將操作數轉換為數字;如果任一操作數為一根繩子,如果可能,另一個操作數將轉換為字符串。如果兩個操作數都是對象。,然后JavaScript比較當操作數引用內存中的同一個對象時相等的內部引用。

(來自比較算子在Mozilla開發人員網絡中)


查看完整回答
反對 回復 2019-07-11
?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

是PHP,其中的字符串"0"是錯誤的(在布爾上下文中使用錯誤)。在JavaScript中,所有非空字符串都是真實的。

訣竅是==對于布爾值在布爾上下文中不進行計算,它將轉換為數字,如果字符串是通過十進制解析完成的。所以你得到了號碼0而不是真布爾true.

這是一個非常糟糕的語言設計,這是我們盡量不使用不幸的原因之一==接線員。使用===相反。


查看完整回答
反對 回復 2019-07-11
  • 3 回答
  • 0 關注
  • 1814 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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