摘要:引用同一个对象,否则。不同,同是或,有,数值相等相等否则同是或,正常比较。于是我们可以测试参考中的相等性判断
概要
本文主要讨论以下几种比较操作:
== 宽松相等 ("double equals"),将执行类型转换
=== 严格相等 ("triple equals" 或 "identity")
Object.is (ECMAScript 2015/ ES6 新特性)与三等号相同,但是对于NaN和-0和+0进行特殊处理
以及ECMA中的ToPrimitive,ToBoolean,ToNumber官方文档的实现逻辑
==若type相同 1.同是Undefined或Null,true 2.同是Number 有NaN,false 数值相等(±0相等)true,否则false 3.同是String或Boolean,正常比较。 5.引用同一个对象,true,否则false。 null,undefined:true string,number: x == ToNumber(y) 有boolean:ToNumber(x)== y String|Number,Object:x == ToPrimitive(y) 返回false。===
type不同,false 同是undefined或null,true Number 有NaN,false 数值相等(±0相等)true,否则false 同是String或Boolean,正常比较。Object.is
Object.is = function(x, y) { // SameValue algorithm if (x === y) { // Steps 1-5, 7-10 // Steps 6.b-6.e: +0 != -0 return x !== 0 || 1 / x === 1 / y; } else { // Step 6.a: NaN == NaN return x !== x && y !== y; } };if(val)
return Boolean(val)===trueToBoolean ToNumber ToPrimitive
于是我们可以测试
var a=[] a.toString() //"" a=="" //true a==true //false a.toString=function(){return true} a==true //true参考
MDN JavaScript 中的相等性判断
ECMS-262
JavaScript-Equality-Table
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/98818.html
摘要:如果没有传入的话如果是类型,则取否则,取这个方法大致和一样,除了以下返回返回参考知乎中和区别是什么全面解析中的数据类型与类型转换规范 有哪些判断相等性的方法 JavaScript现在提供了三种方法来判断相等性: ===,三个等号即严格相等 ==,两个等号即宽松相等 Object.is(),ES6中用来判断相等的方法 判断相等性的细节 ===(严格相等) 被比较的两个数不会进行类型转...
摘要:通常在转换不同数据类型时,相等和不相等会遵循以下规则若有一个操作数是布尔值,则比较前会将布尔值转换为数值转为,转为。 本文是 重温基础 系列文章的第十八篇。今日感受:优化自己的代码,也是很愉快的事情。 系列目录: 【复习资料】ES6/ES7/ES8/ES9资料整理(个人整理) 【重温基础】1-14篇 【重温基础】15.JS对象介绍 【重温基础】16.JSON对象介绍 【重温基础...
摘要:抽象函数引发的关系是等价关系。所以当且仅当通过调用抽象数据类型的任何操作不能区分它们时,两个对象是相等的。必须为每个抽象数据类型适当地定义操作。一般来说,在面向对象编程中使用是一种陋习。 大纲 什么是等价性?为什么要讨论等价性?三种等价性的方式==与equals()不可变类型的等价性对象契约可变类型的等价性自动包装和等价性 什么是等价性?为什么要讨论等价性? ADT上的相等操作 ADT...
摘要:同一类的复合类型值两个复合类型对象数组函数的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。宽松相等双等号将执行类型转换原始类型的值原始类型的数据会转换成数值类型再进行比较。 事件这块知识点虽然是老生长谈的,但对于我来说多多整理,多多感悟,温故知新,每次看看这块都有不同的收获.(在这里我不会长篇大论,只会挑重点;具体的小伙伴们自行查找)参考:https://dev...
摘要:同一类的复合类型值两个复合类型对象数组函数的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。宽松相等双等号将执行类型转换原始类型的值原始类型的数据会转换成数值类型再进行比较。 事件这块知识点虽然是老生长谈的,但对于我来说多多整理,多多感悟,温故知新,每次看看这块都有不同的收获.(在这里我不会长篇大论,只会挑重点;具体的小伙伴们自行查找)参考:https://dev...
阅读 3521·2021-11-24 10:19
阅读 3685·2021-09-30 09:47
阅读 1265·2019-08-30 15:56
阅读 737·2019-08-29 15:11
阅读 880·2019-08-29 13:43
阅读 3537·2019-08-28 18:25
阅读 2134·2019-08-26 13:27
阅读 1369·2019-08-26 11:44