2010-05-22 10 views

Odpowiedz

13

Jest to operator typu ścisłego typu. Sprawdza nie tylko, czy dwa są równe w wartości o wartości, ale także o tym samym typu.

Rozważmy sytuację, jeśli porównać liczb lub ciągów:

if (4 === 4) // same value and type 
{ 
    // true 
} 

ale

if (4 == "4") // same value and different type but == used 
{ 
    // true 
} 

i

if (4 === "4") // same value but different type 
{ 
    // false 
} 

Dotyczy to obiektów, a także tablic.

Tak w powyższych przypadkach, trzeba dokonać sensownego wyboru czy używać == lub ===

To jest dobry pomysł, aby użyć === gdy jesteś pewny co do rodzaju, jak również

+0

dzięki za szybką i dokładną odpowiedź - ustawiona jako odpowiedź po upływie 15 minut – ptrn

+0

@ptrn: Serdecznie zapraszamy :) – Sarfraz

2

Gdy chcesz zablokować domniemane typecasty. Na przykład:

3 == '3' 

jest true, natomiast nie jest to:

3 === '3' 

Douglas Crockforda zaleca zawsze używając ścisłego porównania.

+0

Szczerze mówiąc, zawsze jestem trochę wątpliwy, gdy ktoś mówi "ZAWSZE" do xxx. Widzę sytuacje, w których można porównać liczbę do ciągu. Oczywiście można ręcznie rzucić ciąg na liczbę, ale jeśli JS może to zrobić dla Ciebie, po co zawracać sobie głowę? :) – nico

+2

@nico, zgadzam się, są przypadki, w których po prostu tego nie potrzebujesz, często jest tak, że chcesz porównać z 'null' i' undefined' w jednym kroku, 'if (foo == null)' wykonuje zadanie lub używając operatora 'typeof', również go nie potrzebujesz, ponieważ * zawsze * zwraca ciąg znaków ...' if (typeof foo == "undefined") 'wystarczy ... – CMS

1

go użyć do sprawdzenia jeśli zmienna zawierająca wartość i typ jest taka sama jak porównywana.