本篇仅对隐式转换中的知识点做记录,不深入展开介绍.

[点击查看图片](https://www.processon.com/view/link/60dd8a751e085359888c0d9d)
注意: PreferredType默认为Number,当input为Date类型数据时,PreferredType为String
- valueOf()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| var num = new Number('123'); num.valueOf(); // 123
var str = new String('12df'); str.valueOf(); // '12df'
var bool = new Boolean('fd'); bool.valueOf(); // true
var a = new Date(); a.valueOf(); // 1532234132475
var a = new Array(); a.valueOf(); //[] a.valueOf() === a; // true
var b = new Object({}); b.valueOf(); //{} b.valueOf() === b; // true
|
2.toString()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| var num = new Number('123sd'); num.toString(); // 'NaN'
var str = new String('12df'); str.toString(); // '12df'
var bool = new Boolean('fd'); bool.toString(); // 'true'
var arr = new Array(1,2); arr.toString(); // '1,2'
var d = new Date(); d.toString(); // "Sun Jul 22 2018 12:38:42 GMT+0800 (中国标准时间)"
var func = function () {} func.toString(); // "function () {}"
var obj = new Object({}); obj.toString(); // "[object Object]"
Math.toString(); // "[object Math]"
|
| type(x)|type(y)|result(x==y)|
|-| :- | :-: | -: |
|null|undefined|true|
|String|Number|Number(x)==y|
|Boolean|any|Number(x)==y|
|Object| String or Number|toPrimitive(x)==y|
|NaN|any|false|
1 2 3 4 5 6 7 8 9 10 11
| []==0; //true
1.[]=>ValueOf([])=>[]; 2.[]=>toSring([])=>""
""==0
3.""=>Number("")=>0
0==0
|
1 2 3 4 5 6
| []=="0" //false
1.[]=>ValueOf([])=>[]; 2.[]=>toSring([])=>""
""=="0"
|
| type(x)|type(y)|result(x+y)|
|-| :- | :-: | -: |
|String|any|x+toString(y)|
|Object|any|toString(x)+toString(y)|
|Boolean|Number or Boolean|Number(x)+Number(y)|
1 2 3 4 5 6 7 8 9 10 11
| "1ac"+true // "1actrue" "1ac"+[] // "1ac" "1ac"+[1,'a'] // "1ac1,a" "1ac"+{} // "1ac[object Object]"
{}+true // "[object Object]true" {}+[] // "[object Object]"
true+true // 2 true+1 // 2 false+1 // 1
|