본문 바로가기
FE/Javascript

== & ===

by ideal_string 2022. 9. 23.

자바스크립트를 배우면서 제일 어색했던 게 비교 연산자가 아닐까 싶다. 그 중에서도 동등연산자(==)와 일치연산자(===)가 탑이다. 학교 다닐때 배운적이 있나 싶을 정도다. 아주 간단하지만, 프로그래밍에선 꼭 인지하고 있어야할 두 연산자. 비슷하면서도 확연이 다른 이 두 연산자를 비교했다.

동등 연산자(==)

두 피연산자가 동일한지 확인하며, boolean 값을 반환한다. 이때 타입 즉 자료형이 다르면 동일한 타입으로 변환한다. 숫자와 문자열 비교면 숫자 타입으로, 하나의 피연산자가 boolean일 경우 true라면 1을 반환하고 false라면 +0을 반환한다. 객체와 숫자 혹은 객체와 문자열이라면 객체를 valueOf()나 toString()으로 변환 후 비교한다.

 

일치연산자(===)

두 피연산자가 동일한지 확인하며, boolean 값을 반환한다. 이때 타입 즉 자료형이 다르면 다른 것으로 간주한다. 즉, 숫자 123과 문자열 123은 다르다.

 

비교

  동등 연산자(==) 일치 연산자(===)
반환 값 boolean boolean
+0과 -0 비교 true true
null과 undefined 비교 true false
"123"과 123 비교 true false
[1]과 1 비교 true false

 

마무리

처음 이 두 연산자를 배울 땐 코드에 따라 골라써도 되지 않을까 싶었다. 커뮤니티에선 동등 연산자를 사용하지 말고, 일치 연산자만 사용하라고 권고에 가깝게 이야기 한다. 왜 그럴까 싶었는데, 막상 사용하다보니 이해됐다. 가벼운 단순히 값만 비교하다가는 원치 않은 버그를 만날 수 있기 때문이다. 동등 연산자가 존재한다는 것을 인식하고 처음부터 일치 연산자 사용을 습관들이는 게 좋은 듯하다.

※ 잘못된 내용이 있을 경우 댓글로 알려주세요. 배우고 익히고 수정하겠습니다:)

'FE > Javascript' 카테고리의 다른 글

Object.keys, values, entries, assign  (0) 2022.10.03
Shallow Copy & Deep Copy  (0) 2022.09.24
Primitive type & Reference type  (0) 2022.09.20
null & undefined  (0) 2022.09.15
let, const, var  (1) 2022.09.14