JavaScript에서 변수의 값이 null인지 확인하려면 변수를 null과 직접 비교하면 됩니다. 이때 가장 안전하고 권장되는 방법은 엄격한 동등 연산자(strict equality operator, ===)를 사용하는 것입니다.
왜 === 연산자를 사용해야 할까요?
JavaScript에는 두 가지 동등 연산자가 있습니다.
- == (느슨한 동등 연산자): 비교 전에 자동으로 타입 변환(type coercion)을 수행합니다. 예를 들어
null == undefined는true를 반환하기 때문에 의도치 않은 결과가 나올 수 있습니다. - === (엄격한 동등 연산자): 값과 데이터 타입을 모두 비교합니다. 따라서
null === undefined는false를 반환하며, 정확하게null만 걸러낼 수 있습니다.
따라서 null 여부를 확인할 때는 항상 === 또는 !==를 사용하는 것이 좋습니다.
예제 코드
다음 코드를 실행하면 변수의 값이 null인지 아닌지 확인할 수 있습니다.
<html>
<head>
<title>JavaScript Strict Equality Operator</title>
</head>
<body>
<script>
var a = 10;
if(a === null) {
document.write("Value is null");
} else {
document.write("Value is not null");
}
</script>
</body>
</html>출력 결과
Value is not null
위 예제에서 변수 a의 값은 10이므로 null이 아니기 때문에 "Value is not null"이 출력됩니다.
참고: typeof 연산자의 함정
많은 개발자가 혼동하는 부분 중 하나는 typeof null이 "object"를 반환한다는 점입니다. 이것은 JavaScript 초기 설계 시절부터 남아 있는 유명한 버그(하위 호환성을 위해 유지됨)입니다. 따라서 null 검사에는 typeof가 아닌 반드시 === 비교를 사용해야 합니다.
console.log(typeof null); // "object" (주의!) console.log(null === null); // true console.log(typeof a === "object" && a === null); // 정확한 null 검사
null과 undefined의 차이
- null: 개발자가 의도적으로 '값이 없음'을 할당한 상태입니다.
- undefined: 변수가 선언되었지만 아직 값이 할당되지 않은 상태입니다.
두 값을 모두 확인해야 하는 경우라면 a == null(느슨한 비교)을 사용하면 null과 undefined를 동시에 걸러낼 수 있습니다.