如果两个变量的内容相同,为什么我会收到错误?
function A() { return {k:'k'}; }
function B() { return {k:'k'}; }
var a = new A;
var b = new B;
var s='';
for (prop in a) {
if (typeof a[prop] != "function") {
s += "a[" + prop + "] = " + a[prop] + "; ";
}
}
alert(s);
for (prop in b) {
if (typeof b[prop] != "function") {
s += "b[" + prop + "] = " + b[prop] + "; ";
}
}
alert(s);
alert( a == b ); // false?
即使我同时分配a和b相同的功能,也会发生同样的情况
var obj = {};
function A() { return {k:'k'}; }
var a = new A;
var b = new A;
alert( a == b ); // false?
同样在这里
k={zor:1};
b={zor:1};
alert(k==b); //false
答案 0 :(得分:7)
那是因为对象是通过引用进行比较的。
[] === []; // false
根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators,
如果两个操作数都是对象,则JavaScript会比较内部 当操作数引用同一个对象时,引用是相等的 存储器中。