前端小知識:弄懂Javascript中的假值問題

今天我們聊聊Javascript中的假值問題,廢話不多說,我們先來看一道關於假值的筆試題:

如果你對每個打印的值都很確定,且全都正確,那麼你可以不用繼續往下看了。如果不是,請繼續往下看。

1.什麼是假值

假值:我們將經過toBoolean操作後返回false的值叫做假值。

上面的代碼中,if判斷語句就隱式的將數組中的每個元素做了一次toBoolean操作。

實際工作中還會用到判斷真假的語句有以下幾種:

  • if語句
  • while語句
  • for的第二個語句

注意點:對假值以外的值進行toBoolean轉換時都會返回true。

2.假值有哪些?

Javascript中主要有以下6個假值:undefined、null、0、false、NaN、'';

toBoolean操作具體的返回值請看下面這張ES6規範文檔中的截圖:

前端小知識:弄懂Javascript中的假值問題

來自網絡

看完這張圖我們再回看上面的題目,答案就很清晰了。

3.注意與“==”運算符的區別

使用“==”運算符和上面說的直接判斷真假會有所區別,千萬不要混淆。因為“==”運算符進行的是數值運算,也就是說是使用toNumber操作。下面通過題目對兩者進行解析:

分析:從以上結果可以得到以下結論

  • false、0、''、[]相互“==”判斷為true,其餘為false
  • undefined、null相互“==”判斷為true,其餘為false
  • NaN跟自身都不相等,所以永遠判斷為false

注意:undefined進行toNumber操作後會轉換成NaN,因此與其他的都不等。只是按照約定undefined == null判斷為true

  • 這裡著重說一下 false==[] 為什麼會返回true,我們上面不是剛說完[]空數組做判斷會作為true嗎?
  • 因為對[]自身進行判斷時,進行的是toBoolean操作,根據轉換規範,對象返回的都是true。而在對[]進行“==”運算時,進行的是toNumber操作,因此空數組返回的是0,false也轉換成了0,因此返回的是true

專欄

必須掌握的前端面試題

作者:小劉愛學習

10幣

0人已購

查看


分享到:


相關文章: