JavaScript中的对象标识

JavaScript中的对象标识,javascript,python,Javascript,Python,如何检查两个变量是否指向同一个对象?这意味着如果我对它进行变异,两个变量指向的值都会改变。Python中有是操作符,JavaScript呢?JavaScript中的等效操作符是“==” 类似地,“!==”与Python中的“is not”相同。如果引用相同,则严格相等运算符(=)将求值为true,而不进行任何类型转换: var a, b, c; a = {}; b = {}; c = a; console.log( a === b ); //false console.log( a === c

如何检查两个变量是否指向同一个对象?这意味着如果我对它进行变异,两个变量指向的值都会改变。Python中有
操作符,JavaScript呢?

JavaScript中的等效操作符是“==”


类似地,“!==”与Python中的“is not”相同。

如果引用相同,则严格相等运算符(
=
)将求值为true,而不进行任何类型转换:

var a, b, c;
a = {};
b = {};
c = a;
console.log( a === b ); //false
console.log( a === c ); //true
var a, b;
a = {
    toString: function () {
        return 'foo';
    }
};
b = 'foo';
console.log( a == b ); //true
console.log( a === b ); //false

在击落两篇犯了同样错误的帖子之后,我想我应该指出,由于类型转换,
=
可能会将引用类型等同于值类型:

var a, b, c;
a = {};
b = {};
c = a;
console.log( a === b ); //false
console.log( a === c ); //true
var a, b;
a = {
    toString: function () {
        return 'foo';
    }
};
b = 'foo';
console.log( a == b ); //true
console.log( a === b ); //false
如果你能保证这两个变量都是引用类型,
=
应该可以很好地工作,但是这种情况很少发生,所以你最好在大多数时候坚持严格的比较