Вопрос по jquery, javascript – Javascript: сравнение равенства между двумя объектами / массивами

1

Давайте угадать два объекта с одинаковым свойством:

var x = {a : 'some'},
      y = {a: 'some'};

выход:

x == y; а такжеx === y; оба дают ложные

Аналогично для двух массивов,

var p = [1, 2, 3],
      q = [1,2,3];

p == q а такжеp === q оба даютfalse.

Но если я сделаю следующее:

var x = y = {a: 'some'};
var p = q = [1, 2, 3];

Все приведенные выше сравнения даютtrue.

Почему Javascript делает такую вещь? Объясните пожалуйста.

Ваш Ответ

3   ответа
3

Error: User Rate Limit Exceeded

var p = [1, 2, 3],
q = [1,2,3];

Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded

var p = q = [1, 2, 3];

Error: User Rate Limit ExceededpError: User Rate Limit ExceededqError: User Rate Limit Exceeded

Error: User Rate Limit Exceededhere.
5

true.

Error: User Rate Limit ExceededpError: User Rate Limit ExceededqError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded==Error: User Rate Limit Exceeded===Error: User Rate Limit Exceededsame objectError: User Rate Limit Exceededfalse.

Error: User Rate Limit Exceeded

var a = {}; // a points to an object
var b = {}; // b points to a _different_ object
console.log(a === b); // "false"
console.log(a == b);  // "false"

var c = {}; // c points to an object
var d = c;  // d points to _the same_ object
console.log(c === d); // "true"
console.log(c == d);  // "true"

Error: User Rate Limit ExceededcontentError: User Rate Limit Exceeded

Error: User Rate Limit Exceeded==Error: User Rate Limit ExceededundefinedError: User Rate Limit Exceeded"2" == [[[[[2]]]]]Error: User Rate Limit ExceededtrueError: User Rate Limit ExceededjoinError: User Rate Limit Exceeded"2"Error: User Rate Limit Exceeded===Error: User Rate Limit Exceeded==Error: User Rate Limit Exceeded

Error: User Rate Limit Exceeded
2

var x = {a:'some'}, // one object with "a" = "some"
    y = {a:'some'}; // another object with "a" = "some"

var p = [1,2,3],    // one array with 1,2 and 3
    q = [1,2,3];    // another array with 1,2 and 3

var x = y = {a: 'some'};
//is like:
var x = {a:'some'}, // x points to an object
    y = x;          // y is given reference to whatever x is pointing at


var p = q = [1,2,3];
//is like:
var p = [1,2,3],    // p points to an array
    q = p;          // q is given reference to whatever p is pointing at

Похожие вопросы