如果两个变量具有相同的内容,为什么我会收到错误?
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?
Run Code Online (Sandbox Code Playgroud)
即使我同时分配a和b相同的功能,也会发生同样的情况
var obj = {};
function A() { return {k:'k'}; }
var a = new A;
var b = new A;
alert( a == b ); // false?
Run Code Online (Sandbox Code Playgroud)
和这里一样
k={zor:1};
b={zor:1};
alert(k==b); //false
Run Code Online (Sandbox Code Playgroud)
那是因为对象通过引用进行比较.
[] === []; // false
Run Code Online (Sandbox Code Playgroud)
根据https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators,
如果两个操作数都是对象,则JavaScript比较内部引用,当操作数引用内存中的同一对象时,这些内部引用相等.
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |