一、js中布爾值為false的六種情況
下面6種值轉化為布爾值時為false,其他轉化都為true
1、undefined(未定義,找不到值時出現)
2、null(代表空值)
3、false(布爾值的false,字符串"false"布爾值為true)
4、0(數字0,字符串"0"布爾值為true)
5、NaN(無法計算結果時出現,表示"非數值";但是typeof NaN==="number")
6、""(雙引號)或''(單引號) (空字符串,中間有空格時也是true)
注意空數組空對象,負值轉的布爾值時都為true
數據類型 | 轉為true的值 | 轉為false的值 |
Boolean | true | false |
String | 任何非空字符串 | ''(空字符串) |
Number | 任何非零數字值(包括無窮大) | 0和NaN |
Object | 任何對象 | null |
Undefined | n/a | undefined |
對於0, '', null, undefined, NaN,{}, [], Infinity求布爾值,分別是false false false false false true true true.
因此我們知道的一點是:對象的布爾值是true,即使是對象{}。
"!!"將表達式進行強制轉化為bool值的運算,運算結果為true或者false。
例如 array=[1,2,3] array.num=undefind !array.num=true !!array.num=false
二、出現undefind的中情況
1、未初始化的變量
變量未定義 或 變量定義了沒有賦值 或者 函數形參未賦值
2、不返回任何結果的函數的調用結果
函數return沒有值
function show(){ return; }; console.log(show()); // undefined
函數沒有return
function show(){ }; console.log(show()); // undefined
3. 不存在的對象屬性或方法
let favoriteMovie = { title: 'Blade Runner' }; favoriteMovie.actors; // => undefined
4.越界索引數組元素
const colors = ['blue', 'white', 'red']; colors[5]; // => undefined colors[-1]; // => undefined
三、出現null的幾種情況
1.在JS的DOM元素獲取中,如果沒有獲取到指定的元素對象,結果一般是null。
2.Object.prototype._proto_的值也是null。
3.在正則捕獲的時候,如果沒有捕獲到結果,默認也是null。