1、把其他的數據類型轉換為number類型 Number()->嚴格 parseFloat/parseInt ->非嚴格 isNaN(value) 如果value值不是數字類型的,它是首先調用Number轉換為數字類型然後在判斷是否為有效的數字 例如: Number("12px"); ->NaN p ...
1、把其他的數據類型轉換為number類型
Number()->嚴格
parseFloat/parseInt ->非嚴格
isNaN(value) 如果value值不是數字類型的,它是首先調用Number轉換為數字類型然後在判斷是否為有效的數字
例如:
Number("12px"); ->NaN
parseInt("12px"); ->12
isNaN("12"); ->false
規律:
1)把布爾類型轉換為數字的話 true->1 false->0
2)把null/undefined轉換為數字 null->0 undefined->NaN 10+null=10 10+undefined=NaN
3)把[]轉換為數字 首先調用數組的toString方法把[]->"",然後在使用Number方法把""->0
2、把其他的數據類型轉換為布爾類型
Boolean
!!
! 先轉換為布爾類型,然後在取反
例如:
!!1->true
!!0->false
![]->false !![]->true
規律:
只有0、NaN、null、undefined、""這五個轉換為布爾類型的時候是false,其餘的轉換完成都是true
特殊情況:
如果你的條件判斷中只是單獨的一個值,它是首先把1轉換布爾類型(->true),在判斷是真還是假,如果是真條件成立,反之條件不成立
if (1) { }
if ("3px" * 3) {//->條件不成立 "3px" * 3=NaN ->false
}
if ("3px" + 3) {//->條件成立 "3px" + 3="3px3" ->true
}
"+"在JS中不僅僅是數學運算,遇到字元串的時候屬於字元串拼接
"-、*、/"在JS中只能是數學運算,遇到不是number類型的要強制轉換為number進行數學性運算
3、兩個值進行比較(==比較的,===比較數據類型不一樣不會進行預設的轉換),如果左右兩邊的數據類型不一樣,我們需要遵循一套法則,進行預設的數據類型轉換
value1==value2
1)對象==對象 比較的是自己存儲的記憶體地址,如果記憶體地址不一樣就不相等 []==[]->false 每一個空數組都是一個單獨的記憶體地址
2)對象==字元串 調用toString方法,將對象轉換為字元串 []==""->true
3)對象==布爾 對象轉換為數字(toString-Number),布爾也轉換為數字(true->1 false->0)
[]==false ->true []->0 false->0 0==0->true
![]==false -> ![]先把空數組轉換為布爾類型然後在取反->false false==false->true
4)對象==數字 對象轉換為數字 []==0->true []==1->false
5)字元串==布爾 兩者都轉換為數字 "3"==true->false "1"==true->true
6)字元串==數字 字元串轉換為數字 ""==0->true
7)布爾==數字 布爾轉換為數字 true==1->true true==2->false
8)null==undefined ->true null===undefined ->false
null/undefined和其他的任何值都不相等 null==0->false
9)NaN==NaN ->false NaN和任何的值(包括自己)都不相等