【发布时间】:2018-06-22 18:05:06
【问题描述】:
鉴于此代码:
const name = { name: 'amy' };
function greet(person) {
if (person == { name: 'amy' }) {
return 'hey amy';
} else {
return 'hey there';
}
}
console.log(
greet(name) // 'hey amy'
);
console.log(
greet({ name:'amy' }) // 'hey there'
);
console.log(name == { name: 'amy' }); // true
console.log(name === { name: 'amy' }); // false
console.log(Object.is(name, { name: 'amy' })); // false
为什么在使用name 变量时,双等号比较返回true,而不是对象字面量?
首先,我认为这可能是因为对象具有相同的内存地址,但正如我们所看到的那样,这不是真的。
此外,如果我们颠倒过来并在函数内部定义变量,则比较返回false! (代码中没有显示,但可以查看)
我很困惑,并会感谢您的解释。
编辑: Here 是我测试代码的地方。 Chrome 中的 Nodejs 和浏览器控制台给了我常规的结果,它应该是怎样的。所以也许这与解释器有关。
【问题讨论】:
-
我看到你提到的不同结果。 (只是预期的。)
标签: javascript object variables comparison