js中資料轉Boolean類型是非常重要的一點,不弄懂js中的Boolean類型,容易在邏輯判斷中出現問題,
無論是vue裡面的v-if還是js中的if判斷,都會經常進行各種類型資料轉Boolean
轉換規則
js中0 ‘’(空字元串) null undefined NaN 都會轉換成false,其他資料都會轉化成true
轉換方法
-
Boolean()
這是顯示轉換的方法,這種方法實際用到的情況比較少
let test=2;
console.log(Boolean(test));
-
在if條件語句中隐式轉換(三元運算、v-if等)
if會強制通過ToBoolean計算表達式
實際js代碼中用到這種情況是最多的!
經常會通過判斷一個數字是否是0,字元串有沒有指派,數組有沒有資料來寫js代碼!
數字0是false,其他數字是true
let test=1;
if(test){
console.log('1 is true');
}else{
console.log('1 is false');
}//1 is true
test=0;
if(test){
console.log('0 is true');
}else{
console.log('0 is false');
}// 0 is false
空字元換是false,其他字元串是true
let test='';
console.log(test?'empty is true':'empty is false');//empty is false
test='false';
console.log(test?'str false is true':'empty is false');//str false is true
注意:
空數組是true
,對象也是true,一般都用空數組的length來判斷數組有沒有資料!
let testArr=[];
console.log(testArr?'emptyArr is true':'emptyArr is false');//emptyArr is true
//常用寫法
if(testArr.length){
console.log('testArr has value');
}else{
console.log('testArr doesnt have value');
}//testArr doesnt have value
null undefined NaN也可以自行測試
let test=null;
console.log(test?'null is true':'null is false');//null is false
-
用!!隐式轉換
這種用法比第一種用法用的更多,因為寫起來比較快捷簡單
let test='test';
console.log(!!test);//true
寫法規範
在js中寫Boolean和判斷相關的代碼時,都會要求遵循一定的編碼規範,例如:
- 用
判斷來代替===
,能用全等的地方永遠用全等而不要用==
因為==
===
會先判斷資料類型,資料類型不同直接傳回false
而
==
會先進行資料轉換
同理推薦使用
而不是!==
例如!=
console.log('0'==0);//true
console.log('0'===0);//false
比較運算符
==
的比較規則如下:
基本上就是
- undefined等于undefined undefined等于null
- NaN不等于任何 甚至不等于另一個NaN
- 除了上述類型有數字優先轉數字
- 都是對象保證引用同一對象,否則将對象轉ToPrimitive再對比
-
在if中判斷字元串和數組有沒有值,要采用簡寫
寫成
和if(val)
而不是if(arr.length)
和if(val!=='')
if(arr.length>0)