JavaScript 隐式数据类型转换: 各种类型在适当的场合会发生隐式转换, 主要是运算和条件判断过程中.
运算 (+,-,*,/,%) 判断 (>,<,<=,>=,==,===)
相同数据类型之间运算
Number 运算按数学运算进行, 需要注意的是在进行小数运算时可能会不准确. 结果一定为 Number 类型.
Number 判断按照数学判断进行 结果为 Boolean 类型的 true 或 false.
String 运算两边转化为数字进行运算普通字符串转化为 Number 类型的 NaN 进行运算, 数字型字符串转化为数字例如:"123" 转化为 Number 类型 123. 所有的东西和 NaN 进行算术运算都是 NaN. 还有最特殊的一点就是 +, 字符串进行加法运算时两边不会转化为数字, 直接进行字符串拼接. 结果为 Number 类型或字符串.
String 比较的时候比较的是字符的 Unicode 码, 不会转化数字进行比较 结果为 Boolean 类型的 true 或 fals;
Boolean 运算的时候转化为数字, true 转化为 1,false 转化为 0,0/0,0%0 1%0 结果为 NaN,1/0 结果为 Infinity;
Boolean 比较的时候转化为数字, true 转化为 1,false 转化为 0,== 并不会转化为数字.
undefined 运算的时候转化为数字 NaN 所以所有结果均为 NaN.
undefined 比较的时候不需要转化. undefined>=undefined 结果为 false undefined <=undefined 结果为 false undefined ==undefined 结果为 true
null 运算的时候转化为数字 0 + -* 都为 0 . 0/0,0%0 结果为 NaN
null 比较的时候转化为数字 0 比较
总结:
比较的时候: 先看两的边是不是同种数据类型, 如果是直接看是不是一样就完了, 如果不是那么两边都转数字. 看是不是两边都是字符串 如果是 比较的是字符串的 Unicode 码
当遇到 null 的时候; 会有特殊情况发生,
特殊情况: 空串和 null 不相等
特殊情况: false 和 null 不相等
特殊情况: 0 和 null 不相等
特殊情况: undefined 和 null 相等;
先看是不是 + 如果是 + 看有没有字符串, 如果有 就是拼接字符串
来源: http://www.bubuko.com/infodetail-3346741.html