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...