2010-11-19 4 views
5

은 (파이어 폭스에서 테스트) 자바 스크립트 코드 다음 고려 :양자 이중성 : 변수가 null이며 동시에 정의되지 않습니까?

function f(a) { 

    if (a == undefined) { 
    alert('undefined'); 
    } 

    if (a == null) { 
    alert('null'); 
    } 
} 

f(); 

모두 경고가 표시됩니다, 두 문장에 해당하는 것을 시사한다.

당신은 합리적인 설명을 제공 할 수 있을까요?

답변

10

==은 "소프트"평등 연산자입니다.
두 개의 동등한 오브젝트를 동일하게 비교하기 위해 유형 강제 변환을 사용합니다. 다음의

모든

에 해당합니다

42 == "42" 
0 == false 
0 == "" 
[] == "" 
{} == "[object Object]" 
'/(?:)/' == new RegExp 

대신, 엄격한 평등를 확인하는 === 연산자를 사용해야합니다.

+0

그것은 얻는다 더 나은 :'[[[[[[[[[[2]]]]]]]]]] == 2' –

+0

하나는 RE와 문자열 상당에 해당 몰랐다' '/ (? :) /'==/(? :) /'-> true !! – slebetman

+0

'/ x/'==/x /'-> 참,'/ x /'==/y /'-> 거짓! – slebetman

관련 문제