🧑‍💻개발/JS

[JavaScript] 비교 연산자인 동등연산자(==)와 일치연산자(===)

무택 2023. 3. 15.

안녕하세요 :) 무택입니다🧔

오늘은 동등연산자(==)와 일치연산자(===)의 비교입니다.처음에 보면 헷갈리는 부분이 있기 때문에 정리해보려고 합니다.

 

#동등연산자(==)

 - 두 피연산자의 값이 같으면 true반환

 - 피연산자의 타입이 서로 다르면 강제로 타입을 같게 변환

[10 == '10']   // true   
[true == 1]   // true   
[true == '1']   // true   
[true =='true']   // false   
[null == undefined]   // true
  • [10 == '10']   하나가 숫자형이고 다른 하나가 문자열이면 문자열을 숫자로 변환 후 비교
  • [true == 1]   피연산자 중 불리언 값이 있으면 불리언 값을 0&1로 변환 후 비교(false=0, true=1)
  • [true == '1']   불리언 값이 있기 때문에 true를 1로 변환 후 비교, 1=='1'는 하나는 숫자형이고 하나는 문자열이기 때문에 문자열을 숫자로 변환 후 비교 1==1
  • [true =='true']   불리언 값 true를 1로 변환, 문자열 true는 변환이 불가하므로 1=='true'는 false
  • [null == undefined]   null과 undefined은 엄연히 다르지만 둘 다 빈값이기 때문에 true반환

 

 

#일치연산자(===)

 - 두 피연산자의 값이 같고, 타입까지 같으면 true반환
 - 피연산자의 타입이 다르더라도 강제로 타입 변환 없이 비교

[10 === 10]   // true   
[10 === '10']   // false 
[true === 1]   // false 
[null === undefined]   // false   
[NaN === NaN]   // false
  • [10 === 10]   둘 다 숫자형
  • [10 === '10']   숫자형 === 문자형
  • [true === 1]   불리언 === 숫자형
  • [null === undefined]   null은 object타입, undefined는 undefined타입이기 때문에 false 출력
  • [NaN === NaN]   NaN 값은 어떠한 값과도 일치하지 않음.