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