3

如何检查两个变量是否指向同一个对象?这意味着如果我改变它——两个变量指向的值都会改变。Python中有is运算符,那么JavaScript呢?

4

2 回答 2

8

===如果引用相同而不进行任何类型转换,则严格相等运算符 ( ) 将评估为 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

AFAIK,如果您可以保证两个变量都是引用类型,==那么应该可以正常工作,但是这种情况很少见,因此您最好在大多数情况下坚持严格比较。

于 2013-02-04T22:13:49.190 回答
2

Javascript 中的等效运算符是“===”。

同样,"!==" 与 Python 中的 "is not" 相同。

于 2013-02-04T22:12:58.260 回答