相等运算符

相等运算符

使用 == 时, 不同类型的值也可以被看作相等。这样的结果可能会使那些JavaScript开发者都感到困惑。

用下面表格分析一下不同类型的值用相等运算符比较后的结果

如果x 和 y 类型相同, JavaScript会用equals(相等) 方法比较两个值或对象。 没有列在这个表格中的其他情况都会返回false;

toNumber 和 toPrimitive 方法是内部的。并根据以下表进行估值

toNumber方法对不同类型返回结果如下:

toPrimitive 方法对不同类型返回的结果如下:

console.log('packt' ? true : false)  // true;

console.log('pack' == true) // false;

为什么第二个是输出会是false呢? 

1. 首先, 布尔值会被toNumber方法转成数,因此得到pack = 1

2. 其次, 用 toNumber 转换成字符串值。 因为字符串包含字母, 所以会被转换成NaN, 表达式就变成了 NaN == 1结果就是false]

console.log('pack' == false)?

为什么输出还是false呢? 

首先, 布尔值会被toNumber 方法转成数, 因此 false  = 0;

其次, 用 toNumber转换字符串,因为包含字符串, 所以返回是NaN , 表达式就变成了 NaN == 0 结果就是false


全等运算符 ===

如果比较的值类型不同,比较的结果就是false。 如果比较两个值类型相同, 结果会根据下表判断


console.log('packt' === true); // false

console.log('packt' === 'packt'); // true

var person1 = {name:'John'};

var person2 = {name:'John'};

console.log(person1 === person2); // false,不同的对象

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容