值 => 字符串 | 数字 | 布尔值 | 对象
undefined "undefined" NaN false throws TypeError
null "null" 0 false throws TypeError
--------------------------------------------------------------------
true "true" 1 new Boolean(true)
false "false" 0 new Boolean(false)
--------------------------------------------------------------------
""(空字符串,) 0 false new String("")
"1.2"(非空,数字) 1.2 true new String("1.2")
"one"(非空,非数字) NaN true new String("one")
--------------------------------------------------------------------
0 "0" false new Number(0)
-0 "0" false new Number(-0)
NaN "NaN" false new Number(NaN)
Infinity "Infinity" true new Number(Infinity)
-Infinity "-Infinity" true new Number(-Infinity)
1(数字,非零) "1" true new Number(1)
--------------------------------------------------------------------
{}(任意对象) true
[](任意数组) "" 0 true
[9](一个数字元素) "9" 9 true
['a'](其他数组) 使用join() NaN true
function(){} NaN true
几个类型转换后相等的情况
null == undefined
"0" == 0
0 == false
"0" ==false
“==”运算符从不试图将其操作数转换为布尔类型
关于对象转化成字符串和数字
1.toString(): 返回一个反映该对象的字符串
许多类定义了特定版本的toString方法,例如:
·数组类将每一个数组元素转化为字符串
;[1, 2, 3].toString()
//"1, 2, 3"
·函数类返回这个函数的实现定义的表示方式
;(function(x) {
f(x);
}).toString();
//"(function(x) {\n f(x); \n}).toString()"
·日期类返回一个可读的日期时间字符串
new Date(2017, 11, 16).toString()
//"Sat Dec 16 2017 00:00:00 GMT+0800 (CST)"
·正则表达式(RegExp)类返回正则表达式的直接量的字符串
;/\d+/g.toString()
///\\d+/g
2.valueOf():返回原始值或对象本身
数组、正则、函数返回本身,日期返回内部表示(一般是时间戳)
对象转换成字符串会优先调用toString
转换成数字会优先调用valueOf