JavaScript中的數據類型轉換

把其他數據類型轉化爲number類型

發生的情況:

(1)isNaN:調用Number方法
(2)parseInt、parseFloat、Number
(3)數學運算:+ - * / %
(4)基於“==”比較的時候,有時候也會把其他值轉化爲數字類型的值轉化爲數字類型

轉換規律:
布爾類型的值
true: 1,
false: 0
null: 0,
undefined: NaN

字符串類型的值: 如果有非數字字符(會忽略空格),則返回NaN, 其中要考慮一些特殊字符,比如空格、換行符、製表符等

Number()
引用數據類型的值,需要先調用toString方法轉化爲字符串類型

其他數據類型轉化爲字符串

發生的情況:
1、基於alert、confirm、prompt、document.write
2、基於+進行字符串拼接的時候
3、把引用值轉化爲數字的時候,先轉化爲字符串
4、給對象設置屬性名,如果不是字符串,則先轉換爲字符串
5、手動調用toString、toFixed、join、String的時候

轉化規律:
瀏覽器默認轉化,調用的都是toString方法

把其他數據類型轉化爲布爾值

發生的情況:
1、!、!!、Boolean
2、判斷中的條件

轉化規律:
null undefined 空字符串"" NaN 0轉化後是false, 其他情況都是true

常見隱式數據類型轉換

+

如果表達式中出現字符串,就是字符串拼接,否則就是數學運算

1+ true; // 2
'1'+true; // '1true'
[12] + '10'; // '1210'  //雖然表面沒有字符串,但是轉換過程中會先轉換爲字符串,所以最終是字符串拼接
({}) + 10.  // '[object Object]10'
{} + 10; // 10. 這和數據類型轉換沒有任何關係,這是代碼塊的含義
{} + {}; // '[object Object][object Object]'

10+ true + false + null +undefined + 'zhang' + 'null' + undefined + [] +'false;
// => NaNzhangnullundefinedfalse

==

相同數據類型比較就不在講述

不同數據類型,會先轉換爲相同的數據類型才能比較:
對象 == 對象: 比較的是對象的地址,地址相同返回true,地址不同返回false
對象 == 數字: 先轉換爲數字
對象 == 字符串: 先轉換爲數字
對象 == 布爾: 先轉換爲數字
字符串 == 數字: 先轉換爲數字
字符串 == 布爾: 先轉換爲數字
布爾 == 數字: 先轉換爲數字

null == undefined: true
null === undefined: false
這兩個值和其他所有值都不相等

NaN==NaN : false, NaN和誰都不相等, 包括自身

1 == true; // => true
2 == true; // => false;  true先轉化爲1, 進行比價,結果爲false

[]==[];  // => false

[] == false; // => true; 都轉化爲數字,都是0
[] == true; // => false

![] == false; // false;  !先轉化爲布爾值,爲true, 在判斷true==false
![] == true; // true

![] == []; // true
發佈了32 篇原創文章 · 獲贊 22 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章