동등 연산자(equality operator) ==
는 0과 false를 구별하지 못한다.
alert( 0 == false ); // true
피연산자가 빈 문자열일 때도 같은 문제가 발생한다.
alert( '' == false ); // true
이런 문제는 동등 연산자 ==
가 형이 다른 피연산자를 비교할 때 피연산자를 숫자형으로 바꾸기 때문에 발생한다. 빈 문자열과 false
는 숫자형으로 변환되면 0이 된다.
0
과 false
를 구별하기 위해서는 일치 연산자(strict equality operator) ===
를 사용하면 된다. 일치 연산자를 사용하면 형 변환 없이 값을 비교할 수 있다.
일치 연산자는 엄격한(strict) 동등 연산자이다. 자료형의 동등 여부까지 검사하기 때문에 피연산자 a
와 b
의 형이 다를 경우 a===b
는 즉시 false
를 반환한다.
alert( 0 === false ); // false, 피연산자의 형이 다르기 때문이다.
동등 연산자는 강제 형 변환을 수행하기에 그것이 프로그래머의 의도를 정확하게 반영하지 않을 수 있다. 따라서 일치 연산자를 사용하고 필요에 따라 직접 형변환 후 비교할 수 있도록 하자.