类型转换表格
value | to String | to Number | to Boolean |
---|---|---|---|
undefined | "undefined" | NaN | false |
null | "null" | 0 | false |
true | "true" | 1 | |
false | "false" | 0 | |
"" | 0 | false | |
"1.2" | 1.2 | true | |
"one" | NaN | true | |
0 | "0" | false | |
-0 | "0" | false | |
NaN | "NaN" | false | |
Infinity | "Infinity" | true | |
-Infinity | "-Infinity" | true | |
1 | "1" | true | |
{} | 见下文(Object=>String \ Number) | 见下文(Object=>String \ Number) | true |
[] | "" | 0 | true |
[9] | "9" | 9 | true |
['a'] | "a" | NaN | true |
function(){} | 见下文(Object=>String \ Number) | NaN | true |
toFixed(), toExponential(), toPrecision()
- toFixed()保留n位小数,不会使用指数表示法
- toExponential()小数点前只保留一位,小数点后保留n位小数
- toPrecision()标准指数表示法,n位有效数字
Object=>String \ Number
- Object=>String
- 执行object的toString(),如果得到原始值,将原始值转换为String,如果无法获得原始值,进行步骤2
- 执行object的ValueOf(),如果得到原始值,将原始值转换为String,如果无法获得原始值,进行步骤3
- 报错
- Object=>Number
- 执行object的ValueOf(),如果得到原始值,将原始值转换为String,如果无法获得原始值,进行步骤2
- 执行object的toString(),如果得到原始值,将原始值转换为String,如果无法获得原始值,进行步骤3
- 报错
"+" "==" "!=" ">" "<" ">=" "<=" 与Object的自动转换
- Date:
优先调用toString(),如果得到原始值,转换为原始值;如果toString()没有得到原始值,则调用valueOf() - 其他Object
优先调用valueOf(),如果得到原始值,转换为原始值;如果valueOf()没有得到原始值,则调用toString()
二元+
- 如果两个操作数中有一个是String类型,则将另一个转换为String并进行字符串拼接操作
- 如果两个操作数中有一个是Object类型,则进行Object到原始值的转换,如果得到的原始值为String类型,则将另一个转换为String并进行字符串拼接操作
- 其他进行Number+Number运算
eg:
1 + 2 //3
"1" + "2" //"12"
"1" + 2 //"12"
1 + {} //"1[object Object]"
true + true //2
2 + null //2
2 + undefined //NaN
1 + 2 + "3" //"33"
1 + (2 + "3") //"123"
一元运算符
+
将操作数转换为Number
-
将操作数转换为Number,并取反
==的转换规则
- null == undefined
null == undefined //true
- 字符串和数字比较:将字符串转为数字后进行比较
2 == '2' //true
- boolean:转换为1或0后, 再进行比较
true == 1 //true true == '1' //true
- 见 ‘"+" "==" "!=" ">" "<" ">=" "<=" 与Object的自动转换’
eg:
null == undefined //true
"0" == 0 //true, 转化为数字后比较
0 == false //true, 转化为数字后比较
"0" == false //true, 转化为数字后比较
比较运算符
- 只有String和Number才能进行比较
- 如果两个操作数都是String,根据字母表进行比较(Unicode)
- 如果操作数中有Number,则将另一个操作数转换为Number后进行比较
- 如果一个操作数为NaN,那么比较运算总是返回false
+操作符和比较运算符的异同
- +操作符更偏爱字符串拼接
- 比较运算符更偏爱数字运算
>= 和 <=
>=其实是“不小于”的意思,在判断相等的时候,并不会根据==的规则来进行判断
网友评论