1.下面6種值轉(zhuǎn)化為布爾值時為false假夺,其他轉(zhuǎn)化都為true
1、undefined(未定義已卷,找不到值時出現(xiàn))
2、null(代表空值)
3柿扣、false(布爾值的false,字符串"false"布爾值為true)
4、數(shù)字0 (字符串"0"布爾值為true)
5俯画、NaN(無法計算結(jié)果時出現(xiàn),表示"非數(shù)值"艰垂;但是typeof NaN==="number")
6、""(雙引號)或''(單引號) (空字符串猜憎,中間有空格時也是true)
注意空數(shù)組空對象,負(fù)值轉(zhuǎn)的布爾值時都為true
不同數(shù)據(jù)類型轉(zhuǎn)化為布爾值的結(jié)果
數(shù)據(jù)類型 | 轉(zhuǎn)為true的值 | 轉(zhuǎn)為false的值 |
---|---|---|
Boolean | true | false |
String | 任何非空字符串 | ''(空字符串) |
Number | 任何非零數(shù)字值(包括無窮大) | 0和NaN |
Object | 任何對象 | null |
Undefined | n/a | undefined |
對于0, '', null, undefined, NaN截亦,{}, [], Infinity求布爾值,分別是false false false false false true true true.
因此我們知道的一點是:對象的布爾值是true崩瓤,即使是對象{}。
"!!"將表達(dá)式進(jìn)行強(qiáng)制轉(zhuǎn)化為bool值的運算却桶,運算結(jié)果為true或者false。
例如 array=[1,2,3] array.num=undefind !array.num=true !!array.num=false
2.出現(xiàn)undefind的中情況
-
未初始化的變量
變量未定義 或 變量定義了沒有賦值 或者 函數(shù)形參未賦值 - 不返回任何結(jié)果的函數(shù)的調(diào)用結(jié)果
//函數(shù)return沒有值
function show(){
return;
};
console.log(show()); // undefined
//函數(shù)沒有return
function show(){
};
console.log(show()); // undefined
- 不存在的對象屬性或方法
let favoriteMovie = {
title: 'Blade Runner'
};
favoriteMovie.actors; // => undefined
- 越界索引數(shù)組元素
const colors = ['blue', 'white', 'red'];
colors[5]; // => undefined
colors[-1]; // => undefined
3.出現(xiàn)null的幾種情況
- 在JS的DOM元素獲取中颖系,如果沒有獲取到指定的元素對象辩越,結(jié)果一般是null
- Object.prototype.proto的值也是null
- 在正則捕獲的時候,如果沒有捕獲到結(jié)果区匣,默認(rèn)也是null