if語句中隱式轉換

1、前言

最近在編寫項目過程當中,發現本身對if語句判斷的時候,在面對一些0、字符串爲空的狀況下,本身猶豫了那麼幾秒ide

甚至有時候還可怕的寫下了醜陋的代碼測試

if(str !== ''){// do some things}複製代碼

今天,特地寫了這篇文章記錄下,讓本身長長記性,同時後面有空去翻翻紅寶書對象

2、測試

考慮的狀況有如下:字符串

  • 字符串爲空
  • 數值爲零
  • undefined
  • null
  • 對象不存在的屬性
  • NaN

字符串爲空

if ('') {  console.log('訪問空字符串,能經過')
}// 沒輸出複製代碼

數值爲零

if (0) {  console.log('訪問0,能經過')
}// 沒輸出複製代碼

undefined

if (undefined) {  console.log('訪問undefined,能經過')
}// 沒輸出if(!undefined){console.log('非undefined,能經過')
}// 非undefined,能經過複製代碼

null

if (null) {  console.log('null,能經過')
}// 沒輸出if(!null){console.log('非null,能經過')
}// 非null,能經過複製代碼

對象不存在的屬性

let obj = {  foo: "foo",  num: 0}if (obj.bar) {  console.log('訪問對象不存在屬性時候,能經過')
}// 沒輸出if (obj.foo) {  console.log('訪問對象已存在屬性時候,能經過')
}// 訪問對象已存在屬性時候,能經過複製代碼

NaN

if(NaN){console.log('訪問NaN,能經過')
} 
// 沒輸出if(!NaN){console.log('不爲NaN,能經過')
}// 不爲NaN,能經過複製代碼
相關文章
相關標籤/搜索