值 | 转换为字符串 | 数字 | 布尔值 | 对象 |
---|---|---|---|---|
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](1个数字元素) | "9" | 9 | true | |
['a'](其他数组) | 使用join()方法 | NaN | true | |
function(){}(任意函数) | NaN | true | ||
因为JavaScript可以做灵活的类型转换,因此其“==”相等运算符也随相等的含义灵活多变。
null==undefined
"0"==0 //在比较之前字符串转换成数字
0==false //在比较之前布尔转换成数字
"0"==false //在比较之前字符串和布尔值都转换成数字
除了undefined和null之外的任何值都具有toString()方法。如果把undefined和null转换为对象,会报异常。但是用Object()函数不会抛出异常,简单返回一个新创建的空对象。
如果“+”运算符的一个操作数是字符串,将会把另一个操作符转为字符串。一元“+”运算符将其操作数转化为数字。一元!将其操作数转化为布尔值并取反。
x+"" //等价于String(x)
+x //等价于Number(x),也可写成x-0
!!x //等价于Boolean(x)
Number类定义的toString()方法可以接收表示转换基数的可选参数。
toFixed()根据小数点后的指定位数将数字转换为字符串;toExponential()使用指数记数法将数字转换为指数形式的字符串,小数点前只有一位,小数点后的位数由参数指定;toPrecision()根据指定的有效数字位数将数字转换成字符串,如果有效数字的位数少于数字整数部分的位数,则转换成指数形式。
parseInt()函数和parseFloat()函数是全局函数,不从属于任何类的方法。都会跳过任意数量的空格前导,尽可能多的解析数值字符,并忽略后面的内容。如果第一个飞空格字符是非法的数字直接量,将最终返回NaN。