JS 数据类型
基础类型
- String
- Boolean
- Number
- Symbol
- Undefine
- Null(typeof(null) === "object")
复合类型: 对象
Object(Array, Json)
显示类型转换
Number 的原始类型转换规则
数值转换后还是数值
字符串如果可以解析为数值则为数值, 空字符串为 0, 无法解析的字符串为 NaN
布尔转数值, true 转为 1, false 转为 0
null 转换为 0
原始类型转换 Number
Number 的对象类型转换规则
传入实例 M, 先调用 M 的 valueOf(), 如果返回值 V 为基本数据类型, 则直接使用 Number(V), 求最终返回值
如果 T 不属于基本数据类型, 则调用 M 的 toString(), 如果返回值 S 为基本数据类型, 则直接使用 Number(S), 求最后的结果, 如果 S 不属于基本数据类型, 则直接返回 NaN
对象类型转换 1
对象类型转换 2
String 的原始类型转换规则
数值 (Number) 转为相应的字符串
字符串(String) 转换后还是字符串
布尔值 (Boolean) 转换规则: true => 'true', false=> 'false'
undefine 转换为 "undefine"
null 转换为'null'
String 原始类型转换
String 的对象类型转换规则
与 Number 的对象转换规则类似, 区别是: 先调用对象的 toString(), 然后再调用 valueOf()
其实正常情况下, 对象调用自身的 toString()后, 对象就可以转换为 string 基本类型, valueOf() 没有机会被调用, 但万事有个例, 如果我们重新定义了对象的 toString()方法, 使其返回非基本类型的值, 那样就有机会调用对象的 valueOf()方法了
String 对象类型转换规则
Boolean 的原始类型转换 和 对象类型转换
undefined,null,NaN,'',-0,+0 皆为 false, 其余为 true
隐式类型转换
四则运算 +, -, *, /
隐式类型转换之四则运算
判断语句 if()
Native 调用 console.log(), alert()
来源: http://www.jianshu.com/p/425f073cf808