1. 程式人生 > >JS中Boolean型別的數值轉換與==和===區別

JS中Boolean型別的數值轉換與==和===區別

一、JS中資料型別

    簡單資料型別:Undefined、Null、Boolean、Number、String

    複雜資料型別:Object

Undefined型別只有一個值:undefined,Null型別只有一個值:null

可以用 typeof 來返回某資料型別的字串:

    "undefined"——該值未定義

    "boolean"——該值為布林值

    "string"——該值為字串

    "number"——該值為數值

    "object"——該值為物件或null

    "number"——該值為函式

console.log(typeof "123")//"string"
console.log(typeof 123)//"number"
console.log(typeof true)//"boolean"
console.log(typeof null)//"object"
console.log(typeof undefined)//"undefined"
console.log(typeof (typeof undefined))//"string"

二、各型別值與Boolean型別的轉化

資料型別 轉換為true 轉換為false
Boolean true false
Number 任何非零數字值(包含無窮大Infinity) 0和NaN
String 任何非空字串 ""
Undefined 不存在 undefined
Object 任何物件 null

想提醒大家一句的是0的判斷結果為false,我在使用初期經常因為判斷條件裡有0而沒得到想要的結果,比如:

const isAllowd = 0;
if( isAllowd && isAllowd !== null){
    console.log("true");
} else {
    console.log("false");
}
//false

三、相等操作符

1、相等與不相等:== ,!=

這兩個操作符在比較相等性前會先轉換運算元的資料型別:

1、如果一個運算元是布林值,在比較相等性之前先將其轉換為數值——false轉換為0,true轉換為1;

if( true == 1){
    console.log("true");
} else {
    console.log("false");
}//true
if( true == 2){
    console.log("true");
} else {
    console.log("false");
}//false

2、如果一個運算元是字串,另一個運算元是數值,在比較相等性之前先將字串轉換為數值;

if( "2" == 2){
    console.log("true");
} else {
    console.log("false");
}//true

3、如果一個運算元是物件,另一個運算元不是,則呼叫物件的valueOf()方法,用得到的基本型別值按前面的規則進行比較;

valueOf():返回物件的字串、數值或布林值表示

這兩個操作符在比較時要遵循下列規則:

1、null和undefined是相等的;

2、要比較相等性之前,不能將null和undefined轉換成其他任何值;

3、如果一個運算元是NaN,則相等操作符返回false,而不相等操作符返回true,即使兩個運算元都是NaN,則相等運算元也返回false,因為按照規則,NaN不等於NaN;

4、如果兩個運算元都是物件,則比較它們是不是同一個物件,如果連個運算元都指向同一個物件,則相等操作符返回true,否則返回false;
 

一些特殊情況:

表示式
null == undefined true
“NaN” == NaN false
5 == NaN false
NaN  ==  NaN false
NaN !== NaN true
false == 0 true
true == 1 true
true == 2 false
undefined == 0 false
null == 0 false
“5” == 5 true

2、全等與不全等:=== , !==

全等全不等操作符比較比較嚴格,需要兩個運算元型別和值都相等才行,我開發時一般都用此操作符。