js在進行比較時進行的隱式轉換

2022-09-04 22:33:20 字數 1334 閱讀 2651

js中不同的資料型別之間的比較轉換規則

1.物件和布林值比較

物件和布林值進行比較時,物件先轉換為字串,然後在轉換為數字,布林值直接轉換為數字

== true; // false  轉換為'',然後轉換為數字0,true轉換為數字1,所以為false
2.物件和字串比較

物件轉換為字串,然後兩者在進行比較

[1, 2, 3] == '1,2,3' ; // true  

// [1, 2, 3] 轉化為 '1,2,3' ,然後再和 '1,2,3' 比較,結果true

3.物件和數字比較

物件和數字進行比較時,物件先轉換為字串,然後轉換為數字,再和數字比較

[1] == 1;    // true

// 物件先轉換為字串在轉換為數字,二者在比較 [1] => '1' => 1

4.字串和數字比較

字串和數字進行比較時,字串轉換成數字在比較

'1' == 1;         // true
5.字串和布林值比較

字串和布林值進行比較時,二者全部轉換成數值再比較

'1' == true;            // true

'2' == true; // false

6.布林值和數字比較

布林值和數字進行比較時,布林轉換為數字,二者比較。

true == 1;        // true
來個簡單的圖

如圖,任意兩種型別比較的時候,如果不是同乙個型別比較的話,則按如圖方式進行相應型別轉換,

如物件和布林比較的話:物件=>字串=>數值     布林值=>數值

看乙個有趣的題

== false;

! == false;

// 這兩個結果都是true,第乙個是:物件=>字串=>數值0 false 轉換為數字0

// 第二個前邊多乙個!,則直接轉換為布林值再取反,轉換為布林值時,空字串 '', nan, 0, null, undefined 這幾個外返回的都是true,

// 所以 ! 這個 => true 取反 false,所以 !== false 為true

undefined == null // true undefined和null比較返回true,二者和其他值比較返回false

number(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 空...