JS中的boolean與相等判斷

2021-09-13 02:00:23 字數 1180 閱讀 9823

let bool = new boolean(false);

console.log(bool==true);

console.log(bool==false);

console.log(bool && true);

console.log(bool || false);

結果是

false,false,true,boolean
那麼問題來了

1.bool是true還是false?

2.boolean值判斷相等的機制?

3.建構函式new出來的boolean值跟let bool=false的區別?

思路

1.由於bool && true 的結果為正,說明bool的值為真,實際傳值確實是false。為什麼?

js有三種包裝型別:number,string,boolean,既可以通過賦值的方式直接建立,也可以通過建構函式的方式new乙個示例。

let bool1 = false;

let bool2 = new boolean(false);

console.log(typeof bool1,typeof bool2);

boolean,object
很明顯通過賦值方式出來的是乙個原始型別的布林值,而通過建構函式出來的是乙個物件。一切物件皆可認為是true。實際上為false情況的只有null,undefined,false,』』,0,nan六種,這就解釋了為什麼bool && true為true。

2.既然bool的值為正,那麼bool == true為什麼是false?

這裡就要好好理解一下相等判斷的機制,js中的等號判斷有兩種,一是==,而是===,三等表示全等,包括判斷兩邊的值,資料型別,而雙等存在著隱式轉換。x==y大致存在以下幾種情況

xy都為null或undefined,return true;

x或y為nan, return false;

如果x和y為string,number,boolean並且型別不一致,都轉為number再進行比較

如果存在object,比較的是指標位置

因此 bool == true為false,bool == false為false

JS中的Boolean物件

使用new操作符和boolean value 建構函式時,得到的並不是原始的true或false,而是乙個物件,js將物件視為真 true var obooleantrue new boolean true var obooleanfalse new boolean false console.lo...

js中的相等與不等運算

以下的規定了一些特殊的比較 null 和 undefined 是相等的。null 和 undefined 不會轉換為任何其他型別 如果任何乙個操作的結果為 nan,那麼相等比較返回 false,不相等比較返回 true。注意,即使兩個運算元都為 nan,返回結果一樣是 false,也就是說,nan ...

js中的相等與不等運算

如果其中乙個運算元的型別為 boolean 那麼,首先將它轉換為數字型別,false 轉換為 0,true 將轉換為 1。如果其中乙個運算元的型別是字串,另外乙個為數字型別,那麼,將字串轉換為數字進行比較。如果其中乙個運算元的型別是字串,另外乙個為 object 型別,那麼,將呼叫物件的 tostr...