JS中对象严格相等的比较

时间:2018-04-11 01:08:33

标签: javascript node.js

我正在查看规范:

  

http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6

     

http://www.ecma-international.org/ecma-262/5.1/#sec-9.12

我见过JS代码这样做:

spring.data.cassandra.port=9142
spring.data.cassandra.keyspace-name=local_test

代码按预期工作,它似乎使用严格相等 - 它不会将函数转换为字符串然后比较字符串 - 这会很疯狂 - 它使用内存地址或类似Java的东西,对吧? / p>

它是如何实际运作的?有人知道吗?该规范似乎没有提及功能比较或相关的对象。

1 个答案:

答案 0 :(得分:1)

  

它使用内存地址或类似Java的东西,对吗?

差不多。引用对象的变量本质上是对内存位置的引用 - 对象(和函数)只有在引用内存中的相同位置时才相等。因此,{ foo: 'bar' } !== { foo: 'bar' }因为每个对象都是单独创建的。

但是,可以考虑通过 value 来比较所有非对象(基元)。