Patrzyłem na klauzulę 11.9.6 ES5 próbując dowiedzieć się, dlaczego [1,2,3] === [1,2,3] zwraca fałszywe.

Kod:

a = [1,2,3]
b = [1,2,3]
a === b // false

Odpowiednie reguły dla surowego algo porównania równości:

x === y.

(1) Jeśli typ (X) różni się od typu (Y), powrót false .

...

...

...

(7) Zwróć prawdę, jeśli X i Y odnoszą się do tego samego obiektu. W przeciwnym razie powrót false .

Jakieś pomysły, dlaczego tłumacz zwraca fałszywy?

1
Leila Hamon 12 sierpień 2012, 21:14

5 odpowiedzi

Najlepsza odpowiedź

a i b to dwa różne obiekty, zdarzają się mieć w nich te same wartości liczbowe. Jeśli zrobiłeś a[0] = 42; następnie b[0] nadal byłby równy 1.

4
Bort 12 sierpień 2012, 18:34

Nie odnoszą się do tego samego obiektu. Proste.

0
Florian Minges 12 sierpień 2012, 17:16

Wygląda na to, że a i b odnoszą się do różnych obiektów. Mogą one zawierać tę samą wartość i są instancjami tej samej klasy, ale możesz zmienić jeden, a drugi pobyty tak samo.

0
quamrana 12 sierpień 2012, 17:17

(7) Return true if x and y refer to the same object. Otherwise return false. - nie odnosi się do tego samego obiektu.

0
Dan Barzilay 12 sierpień 2012, 17:17

Ponieważ tworzone są dwa obiekty.

0
Ed Heal 12 sierpień 2012, 17:17