天天看點

javascript布爾值的轉換與條件判斷

js中資料轉Boolean類型是非常重要的一點,不弄懂js中的Boolean類型,容易在邏輯判斷中出現問題,

無論是vue裡面的v-if還是js中的if判斷,都會經常進行各種類型資料轉Boolean

轉換規則

js中0 ‘’(空字元串) null undefined NaN 都會轉換成false,其他資料都會轉化成true

轉換方法

  1. Boolean()

    這是顯示轉換的方法,這種方法實際用到的情況比較少

let test=2;
	console.log(Boolean(test));
           
  1. 在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
           
  1. 用!!隐式轉換

    這種用法比第一種用法用的更多,因為寫起來比較快捷簡單

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)

繼續閱讀