一、數據類型: 原始數據類型:Boolean/ Null / Undefined / Number / String / Symbol(ES6中新增數據類型) 對象:Object 二、類型轉換 1)顯示類型轉換: a. Number函數 b. String函數 c.Boolean函數 2) 顯示類型 ...
一、數據類型:
原始數據類型:Boolean/ Null / Undefined / Number / String / Symbol(ES6中新增數據類型)
對象:Object
二、類型轉換
1)顯示類型轉換:
a. Number函數
b. String函數
c.Boolean函數
2) 顯示類型轉換 Number函數
當原始類型轉換時,分別對應以下情況:
數值:轉換後還是原來的值。
字元串:如果可以被解析為數值,則轉換為相應的數值,否則得到NaN,空字元串轉換為0
布爾值:true轉成1, false轉成0
undefined: 轉成NaN
null: 轉成0
當為對象類型轉換時,遵循以下方式:
a.先調用對象自身的valueOf方法,如果改方法返回原始類型的值(數值/字元串/boolean等),則直接對該值使用 Number方法,不在進行後續步驟。
b.如果valueOf方法返回覆合類型的值,在調用對象自身的toString方法,如果toString方法返回原始類型的值,則對該值使用Number方法,不在進行後續步驟。
c.如果toString方法返回的時複合類型的值,則報錯.
如例: var a = {b: 1}; Number(a); // 輸出NaN,按照如上步驟規則,則
首先a.valueOf() 輸出{b: 1}, 返回不是原始數據類型,則調用toString方法,返回“[object Object]”, 返回字元串類型,Number('[object, object]') 則輸出NaN。
3)顯示類型轉換 String函數
當轉換為原始類型數據時,按照如下規則:
數值:轉換為相應的字元串
字元串: 轉換後還是原來的值
布爾值: true轉換為‘true’, false轉換為‘false’
undefined: 轉換為“undefined”
null: 轉換為‘null’
當轉換類型為對象類型時,按照如下規則轉換:
a.先調用toString方法,如果toString返回的時原始數據類型,則對該值使用toString方法,不在進行以下步驟。
b.如果toString方法返回對是複合類型的值,在調用valueOf方法,如果valueOf方法返回的是原始數據類型的值,則對該值使用String方法,不在進行以下步驟。
c.如果valueOf方法返回的是複合類型的值,則報錯。
4)顯示類型轉換 Boolean函數
當轉換數據為原始數據類型是,按照如下規則轉換
當為null、undifined、NaN、0、‘’,轉換為false,其他轉換都為true
5)隱式類型轉換,如四則運算/判斷語句/Native調用,轉換與以上轉換規則相同.
輸出以下結果:
[] + [];
[] + {};
{} + [];
{} + {};
true + true;
1 + {a: 1};