ota*_*tay 12
对象通过引用相等,[]是具有新引用的新对象,右手[]也是具有新引用的全新对象,因此它们不相等,如:
var user1 = new User();
var user2 = new User();
user1 === user2; // Never true
Run Code Online (Sandbox Code Playgroud)
考虑以下两种情况:
[] == []; // returns false
["foo"] == ["foo"]; // returns false
Run Code Online (Sandbox Code Playgroud)
在这里,创建了两个不同的对象,并且在不同内存位置创建的这两个不同实例永远不会相同(对象实例比较比较内存地址)。结果false输出。
但,
["foo"] == "foo"; // returns true
Run Code Online (Sandbox Code Playgroud)
在这里,["foo"]对象类型被隐式转换为primitive type. 现在"foo"右侧是string这样,它尝试将其转换为string( .toString(), since double equals allows coercion) 并进行比较"foo" == "foo",即true.
结论:我们通过内存指针/地址来比较对象实例,或者我们可以通过实值比较说引用和原始类型。
| 归档时间: |
|
| 查看次数: |
3217 次 |
| 最近记录: |