Den*_*ret 72
你使用==或===:
var thesame = obj1===obj2;
Run Code Online (Sandbox Code Playgroud)
如果两个操作数都是对象,则JavaScript比较内部引用,当操作数引用内存中的同一对象时,这些内部引用相等.
Que*_*tin 15
如果两个变量指向同一个对象,则相等和严格相等运算符都会告诉您.
foo == bar
foo === bar
Run Code Online (Sandbox Code Playgroud)
Raj*_*jiv 11
对于像对象这样的引用类型,==或===运算符仅检查其引用。
例如
let a= { text:'my text', val:'my val'}
let b= { text:'my text', val:'my val'}
Run Code Online (Sandbox Code Playgroud)
这里 a==b 将是假的,因为尽管它们的内容相同,但两个变量的引用不同。
但如果我把它改成
a=b
Run Code Online (Sandbox Code Playgroud)
如果我现在检查 a==b 那么它将是 true ,因为现在两个变量的引用是相同的。
从 开始ES2015,Object.is()引入了一种新方法,可用于比较和评估两个变量/引用的相同性:
下面是几个例子:
Object.is('abc', 'abc'); // true
Object.is(window, window); // true
Object.is({}, {}); // false
const foo = { p: 1 };
const bar = { p: 1 };
const baz = foo;
Object.is(foo, bar); // false
Object.is(foo, baz); // true
Run Code Online (Sandbox Code Playgroud)
演示:
Object.is('abc', 'abc'); // true
Object.is(window, window); // true
Object.is({}, {}); // false
const foo = { p: 1 };
const bar = { p: 1 };
const baz = foo;
Object.is(foo, bar); // false
Object.is(foo, baz); // true
Run Code Online (Sandbox Code Playgroud)
注意:该算法在处理有符号零和 NaN 方面与严格相等比较算法不同。
| 归档时间: |
|
| 查看次数: |
30422 次 |
| 最近记录: |