자바스크립트 ) == , === 차이점

Jeong-Taek·2022년 10월 26일
0

==연산자

JavaScript에서는 타입변환이 유연하게 동작한다.
== 연산자는 두 피연산자의 값의 타입이 다를경우 자동으로 일부 피연산자의 타입을 변환하여 값을 비교한다.

10 == 10    // true
10 == '10'  // true
true == 1   // true
true == '1' // true
true == 'true' // false

null == undefined // true
출처: https://developer-talk.tistory.com/184 

10 == '10'
두 피연산에서 하나가 숫자형이고 다른 하나가 문자열이면, 문자열을 숫자로 변환 후 값을 비교함

true == 1
두 피연산자에서 불리언 값이 존재하면, 불리언 값을 1로 변환 후 값을 비교함

true == '1'
불리언 값을 1로 변환하면, 1 == '1'이 되는데, 문자열 '1'을 숫자로 변환 후 값을 비교함
즉, 1 == 1로 비교되며, true를 반환한다.

ture == 'true'
불리언 값을 1로 변환하면, 1 == 'true'가 되는데, 문자열 'true'는 숫자로 변환 불가능
즉, 1 == 'true'로 비교되며, false를 반환합니다.

null == undefined
null과 undefined는 엄연히 다르지만, == 연산자는 true를 반환하다.

===연산자

==연산자는 값을 비교하기전 타입이 다를 경우 타입을 변환한 후에 값을 비교하는데 ===연산자는 타입을 변환하지 않으므로 ==연산자의 비해 비교하는 방식이 매우 엄격하다.
즉! ===연산자는 타입이 다르면 false를 반환한다.

10 === 10   // true

10 === '10' // false

true === 1  // false

true === 'true' // false

null === undefined // false

NaN === NaN // false

특징을 간단히 살펴보자
1. NaN값은 자기 자신을 포함하여 어떠한 값과도 일치하지 않는다. 즉 ===연산자에 NaN값이 존재하는 경우 항상 false다.
2. 정확한 문자열을 비교하기 위해 localeCompare메서드를 사용하는 것이 좋다. (눈으로 보았을 때 동일해도 인코딩 방식이 다를 수 있음)

0개의 댓글