JS 类型转换 - 隐式转换
简单规则介绍
如果一个操作数是布尔值,那么在比较之前相等性之前 会将其转换成number类型
例如:ture == 1
- 如果一个数是字符串,另一个操作数是数值,那么在比较时也会将这个字符串转换成数值 如果是一个不合法的数值则结果NaN 我们知道NaN和任何内容比较都不相等,包括自身 同时 如果在进行比较是 一个操作数是NaN 那么就会无视规则 直接返回false
- null == null 也会无视规则 直接返回TRUE
- undefined == undefined也会无视规则直接返回true
- null == undefined 也会无视规则直接返回TRUE
- NaN == NaN 也会无视规则直接返回false
- === 全等号在进行比较的时候 不会转换类型
- 如果一个操作数 是对象 另一个操作数不是对象 就会调用对象的tostring方法 用得到的基本值按照之前的规则去进行比较
- 如果两个操作数 都是对象 则去比较他们是否同一个对象 也就是引用地址是否是相同,如果不是相同,那么就会返回额FALSE 反之 true
例子
console.log("1"+true); //结果为 1true
console.log(1+true); //结果为 2
console.log(1+undefined); // 结果 NAN
console.log (1+null); //结果为 1
console.log(true == 1); // true
简单来说就是,在比较运算过程中,基本数据类型会隐式转换,复杂数据类型不能隐式转换,但会使用toString()转成字符串,然后再进行隐式转换