js中不同的資料型別之間的比較轉換規則
1.物件和布林值比較
物件和布林值進行比較時,物件先轉換為字串,然後在轉換為數字,布林值直接轉換為數字
== true; // false 轉換為'',然後轉換為數字0,true轉換為數字1,所以為false2.物件和字串比較
物件轉換為字串,然後兩者在進行比較
[1, 2, 3] == '1,2,3' ; // true3.物件和數字比較// [1, 2, 3] 轉化為 '1,2,3' ,然後再和 '1,2,3' 比較,結果true
物件和數字進行比較時,物件先轉換為字串,然後轉換為數字,再和數字比較
[1] == 1; // true4.字串和數字比較// 物件先轉換為字串在轉換為數字,二者在比較 [1] => '1' => 1
字串和數字進行比較時,字串轉換成數字在比較
'1' == 1; // true5.字串和布林值比較
字串和布林值進行比較時,二者全部轉換成數值再比較
'1' == true; // true6.布林值和數字比較'2' == true; // false
布林值和數字進行比較時,布林轉換為數字,二者比較。
true == 1; // true來個簡單的圖
如圖,任意兩種型別比較的時候,如果不是同乙個型別比較的話,則按如圖方式進行相應型別轉換,
如物件和布林比較的話:物件=>字串=>數值 布林值=>數值
看乙個有趣的題
== false;! == false;
// 這兩個結果都是true,第乙個是:物件=>字串=>數值0 false 轉換為數字0
// 第二個前邊多乙個!,則直接轉換為布林值再取反,轉換為布林值時,空字串 '', nan, 0, null, undefined 這幾個外返回的都是true,
// 所以 ! 這個 => true 取反 false,所以 !== false 為true
undefined == null // true undefined和null比較返回true,二者和其他值比較返回falsenumber(null) // 0
js 引起的隱式轉換
var undefined undefined null true 1 true true 2 true false 0 false true 0 true nan nan false false true true alert true alert false alert 0 true alert...
js中的隱式轉換
原因 如上圖很疑惑這樣能判斷通過。後來查閱資料是因為js中的隱式轉換的問題 js原始型別包含 string number boolean null undefined symbol js的物件型別包含 object 隱式轉換概念 1.undefined與null相等,但不恒等 2.乙個是number...
js 的隱式轉換與顯式轉換
隱式轉換 1.undefined與null相等,但不恒等 2.乙個是number乙個是string時,會嘗試將string轉換為number 3.隱式轉換將boolean轉換為number,0或1 4.隱式轉換將object轉換成number或string,取決於另外乙個對比量的型別 5.對於0 空...