728x90
처음 학교 '웹 프로그래밍' 과목에서 ==와 ===가 다름을 배웠을 때, "굳이 이렇게까지...?"라고 생각했다.
며칠 전, 이제 웹을 시작한 친구가 둘의 차이점을 물어봐서 "아마... type까지 검사하고 안하고일껄...?"라고 대답했다.
떠오른 김에 정리해보자.
Equality vs Identity
Javascript는 엄격한 비교와 type 변환 비교를 모두 지원한다.
Equality
==와 !=는 Equality 연산자이다.
Javascript에서 Equality 연산자를 사용하면, 먼저 피연산자들의 type을 비교할 수 있는 형태로 변환 후 연산을 수행힌다.
555 == '555' // true
true == 1 // true
'Hello' === new String('Hello') // true
undefined == null // true
null == false // false
true == 'true' // false
true == 2 // false
Identity
===와 !==는 Identity 연산자이다. Equality 연산자와는 달리 형변환을 하지 않고 연산을 수행한다.
값뿐만 아니라 data type까지 일치하는 경우, true를 반환한다.
555 === '555' // false
true === 1 // false
undefined === null // false
'Hello' === new String('Hello') // false
🎯 결론
비교 연산을 수행할 때는 '==='를 사용하여 type까지 검사하는 것을 권장한다.
typescript에서 type검사를 하는 이유와 비슷하지 않을까?
컴파일 오류나 눈으로 찾기 힘든 결함을 찾아줄 수 있을 것 같다.
ReactJS로 코드를 깨작깨작할 때, eslint가 == 연산자를 사용한 부분에서 계속 ===를 사용하라고 경고를 날렸던 기억이 난다.
728x90
'💻 Study > 웹' 카테고리의 다른 글
[Netlify] Treating warnings as errors because process.env.CI = true. (0) | 2022.01.03 |
---|---|
[Node.js] GET과 POST의 차이는 무엇일까? (0) | 2021.12.08 |
#2-2 USEEFFECT (0) | 2021.01.12 |
#2-1 USEEFFECT (0) | 2021.01.12 |
#1 USESTATE (0) | 2021.01.12 |