2013-02-04 2 views
3

Как проверить, что две переменные указывают на один и тот же объект? Это означает, что если я его мутирую, значение, на которое указывают обе переменные, изменится. В Python есть оператор is, как насчет JavaScript?Идентификация объекта в JavaScript

ответ

8

оператор строгого равенства (===) будет оценивать истинно, если ссылки являются одинаковыми, не делая преобразование типов:

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 

A FAIK, если вы можете гарантировать, что обе переменные являются ссылочными типами, == должен работать нормально, но это редко бывает так, что вам лучше не придерживаться строгого сравнения большую часть времени.

2

Эквивалентный оператор в Javascript является «===».

Аналогичным образом, «! ==» является таким же, как «нет» в Python.

Смежные вопросы