본문 바로가기

JS - ==, ===의 차이점 본문

개발/JavaScript

JS - ==, ===의 차이점

자전하는명왕성 2023. 1. 10. 14:31

1. == , === 차이점

두 연산자 모두 '비교'를 하는 것에 있어서 동일한 역할을 수행한다.

비교하는 두 값이 동일할 경우는 true를 반환하며, 그렇지 않은 경우에는 false값을 반환한다.

 

허나, 두 연산자의 차이는 '어디까지 동일한 것으로 볼 것인가에 대한 기준'이 다르다는 것.

이번 포스팅에서는 두 연산자의 차이에 대해 간단히 언급한다.

 

== 느슨한 연산자 (이중 등호)

등호가 두번 쓰여진 '==' 는 '느슨한 연산자'라고도 말한다.

그 말마따나 엄격한 '===' 연산자에 비해 유한 편인데,

'==' 연산자의 경우, 두 피연산자의 값의 타입이 다를 경우 자동으로 일부 피연산자의 타입을 변환한다.

// 예시
10 == '10' // true 반환
true == '1' // true 반환
null == undefined // true 반환
true == 'true' // false 반환

// 이때, 불리언 값을 1로 변환하면, 1=='true'가 되는데,
// 문자열 'true'의 경우는 숫자로 변환이 불가능하기에,
// 1 == 'true'로 비교된다.

(위에 제시한 내용과 같은 내용이긴 하나, 사진이 하나도 없으면 허전한 것 같아서 넣었다.)

 

=== 엄격한 연산자 (삼중 등호)

엄격한 연산자는 위의 느슨한 연산자와는 다르게 타입을 변환하여 비교해주지 않는다.

명목적인 값이 같더라도, 타입이 다르면 무조건 false를 반환한다는 특이점이 있다.

// 예시
10 === '10' // false 반환
true === '1' // false 반환
null === undefined // false 반환
true === 'true' // false 반환

NaN === NaN // false 반환

재밌는 점은 NaN(not a number)의 경우는, '자기 자신을 포함하여 어떠한 값과도 일치되지 않는다'는 성질을 가지고 있기 때문에,

NaN과 엄격한 연산자로써 비교되는 모든 수는 false를 반환한다.

 

어느 연산을 쓸지에 대한 생각은 코드 작성자가 어떤 종류의 비교를 수행을 하기 위해 찾고 있는지에 달렸으며, 둘 중 무엇이 좋고 나쁘다고 할 수 없다.

Comments