[JavaScript] ==와 ===의 차이점(동등연산자와 일치연산자)

나지은·2020년 12월 1일
1
post-thumbnail

동등연산자(==, equality operator)와 일치연산자(===, strict equality operator)

동등연산자(==)는 피연산자들의 값만 비교합니다. 반면에 일치연산자(===)는 피연산자들의 값과 타입을 모두 비교합니다.

다른 데이터 타입을 가진 값 비교

비교하려는 값의 데이터 타입이 다르면 자바스크립트는 이 값들을 숫자형으로 바꿉니다.

console.log('01' == 1) // true, 문자열 '01'이 숫자 1로 변환된 후 비교 진행

boolean의 경우 true1, false0으로 변환된 후 비교가 이루어집니다.

console.log(true == 1) // true
console.log(false == 0) // true

일치연산자

동등연산자 ==은 아래처럼 0false를 구별하지 못합니다.

console.log(0  == false); // true
console.log('' == false); // true

동등연산자 ==가 데이터 타입이 다른 피연산자를 비교할 때, 피연산자를 숫자로 바꾸기 때문에 이와 같은 일이 발생합니다.

0false를 구분하려면 어떻게 해야할까요?

일치연산자를 사용하면 데이터 타입의 변환 없이 값을 비교할 수 있습니다. 일치연산자는 데이터타입의 동등여부까지 검사하기 때문에, 피연산자의 데이터타입이 다를 경우 false를 반환합니다.

console.log(0 === false) // false

null이나 undefined와 비교

nullundefined 모두 '값이 없다'는 값이자, 데이터 타입을 나타냅니다.
null은 값이지만 값으로서 의미없는 특별한 값이 등록되어 있는 것이고, undefined는 등록이 되어있지 않기 때문에 초기화도 정의되어 있지 않은 것 입니다.

==(동등연산자)를 사용하여 null과 undefined 비교

동등연산자는 값만 비교하기 때문에 nullundefined의 비교시 true를 반환합니다.

console.log(null == undefined) //true

===(일치연산자)를 사용하여 null과 undefined 비교

일치연산자는 값과 타입을 비교하는데, nullundefined의 데이터 타입이 다르기 때문에 false가 반환됩니다.

console.log(null === undefined) //false

참고
비교연산자
undefined와 null의 차이점

profile
즐거움을 찾는 개발자🐯

0개의 댓글