| 參數(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 |
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。