对象相等与不相等

Posted 专注前端开发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象相等与不相等相关的知识,希望对你有一定的参考价值。

看一段代码:

var a =function xx(){
                return {xxx:"eee"}
            };
        var c = a();
        var b = a();
        console.log(c == b)  //false

c和b是两个单独的对象,所以不相等

等同于

1 var e = {xxx:"eee"}
2         var f = {xxx:"eee"}
3         console.info(e == f)

但是这种又是相等的

1         var ee = {xxx:"eee"}
2         var ee1 = ee;
3         var ee2 = ee;
4         console.log(ee1 == ee2)

但是这样又不想等了:

console.log({xxx:"eee"} == {xxx:"eee"})

得出结论 引用类型的值 指向同一个堆内存的指针会相等,而就算两个完全相同的对象因为是两个堆内存所以不会相同:

由此得出以下结论:如下代码肯定相等:

1         var ee = {xxx:"eee"}
2         var ee1 = ee;
3         var ee2 = ee;
4 
5         ee1.cc = "4444";
6         console.log(ee1 == ee2);

修改ee1时其实是通过指针修改的 ee ;

 

以上是关于对象相等与不相等的主要内容,如果未能解决你的问题,请参考以下文章

关于js中值的比较规则问题

关于js中值的比较规则问题

TensorFlow.js:那两个张量相等吗?

c# 比较两个对象的值是不是相等

为啥这些日期时间对象时区不相等?

js判断两个对象的值是不是相等