參數(shù)類型 |
false |
true |
Undefined |
√ |
|
Number |
±0,NaN |
√ |
String |
"" |
√ |
Object |
null |
√ |
雙等號(hào)等價(jià)判斷
Type(x) |
Type(y) |
Result |
null |
Undefined |
true |
Undefined |
null |
true |
Number |
String |
x == toNumber(y) |
String |
Number |
toNumber(x) == y |
Boolean |
any |
toNumber(x) == y |
any |
Boolean |
x == toNumber(y) |
String or Number |
Object |
x == toPrimitive(y) |
Object |
String or Number |
toPrimitive(x) == y |
其他 |
其他 |
false |
ToNumber[轉(zhuǎn)化為數(shù)字
參數(shù)類型 |
結(jié)果 |
Undefined |
NaN |
Null |
0 |
Boolean |
參數(shù)是true結(jié)果為1 |
|
參數(shù)是false結(jié)果為0 |
Number |
不用轉(zhuǎn)化 |
String |
效果等價(jià)于Number(string) |
|
"abc" --> NaN |
|
"123" --> 123 |
Object轉(zhuǎn)換數(shù)字的步驟
通過(guò)以下2個(gè)步驟進(jìn)行轉(zhuǎn)換
1.toPrimitive(inputParam, preferredType)轉(zhuǎn)化為原始值
preferredType[Number|String]:代表了轉(zhuǎn)換的偏好
if(Number){
1>如果輸入的值已經(jīng)是個(gè)原始值,則直接返回它
2>否則,如果輸入的值是一個(gè)對(duì)象.則調(diào)用該對(duì)象的valueOf()方法.如果valueOf()方法的返回值是一個(gè)原始值,則返回這個(gè)原始值.
3>否則,調(diào)用這個(gè)對(duì)象的toString()方法.如果toString()方法的返回值是一個(gè)原始值,則返回這個(gè)原始值.
4>否則,拋出TypeError異常.
}else if(String){
1>調(diào)用這個(gè)對(duì)象的toString()方法.如果toString()方法的返回值是一個(gè)原始值,則返回這個(gè)原始值.
2>否則,如果輸入的值是一個(gè)對(duì)象.則調(diào)用該對(duì)象的valueOf()方法.如果valueOf()
}else{
Date類型的對(duì)象會(huì)被設(shè)置為String,其它類型的值會(huì)被設(shè)置為Number
}
2.toNumber()將這個(gè)原始值轉(zhuǎn)化為數(shù)字
ToPrimitive()[轉(zhuǎn)化為原始值]
參數(shù)類型 |
結(jié)果 |
Object |
通過(guò)以下3個(gè)步驟進(jìn)行轉(zhuǎn)換 |
|
1.valueOf() |
|
2.toString() |
|
3.an error |
其他情況 |
不用轉(zhuǎn)換 |
ToString()[轉(zhuǎn)化為字符串]
參數(shù)類型 |
結(jié)果 |
Undefined |
"undefined" |
Null |
"null" |
Boolean |
"true" |
"false" |
Number |
轉(zhuǎn)化為字符串 |
String |
不用轉(zhuǎn)換 |
Object |
通過(guò)以下2個(gè)步驟進(jìn)行轉(zhuǎn)換 |
|
1.toPrimitive(obj, String)轉(zhuǎn)化為原始值 |
|
2.toString()將這個(gè)原始值轉(zhuǎn)化為字符串 |
有下面這樣的一個(gè)加法操作.
value1 + value2
在計(jì)算這個(gè)表達(dá)式時(shí),內(nèi)部的操作步驟是這樣的
將兩個(gè)操作數(shù)轉(zhuǎn)換為原始值
prim1 := ToPrimitive(value1)
prim2 := ToPrimitive(value2)
PreferredType被省略,因此Date類型的值采用String,其他類型的值采用Number.
如果prim1或者prim2中的任意一個(gè)為字符串,則將另外一個(gè)也轉(zhuǎn)換成字符串,然后返回兩個(gè)字符串連接操作后的結(jié)果.
否則,將prim1和prim2都轉(zhuǎn)換為數(shù)字類型,返回他們的和.
總結(jié):先轉(zhuǎn)數(shù)字再轉(zhuǎn)字符串
嚴(yán)格相等
類型 |
值 |
結(jié)果 |
Undefined |
|
true |
Null |
|
true |
Number |
NaN |
false |
String |
相同的字符串 |
true |
Boolean |
同為true或false |
true |
Object |
引用相同時(shí) |
true |
其他情況 |
|
false |