필자는 유니티엔진을 사용해 게임 개발을 주로 하다가 보니까 C#을 주로 사용했는데, 백엔드서버나 프론트엔드 작업을 하면서 자바스크립트에 "===" "==" 두 가지가 서로 다르게 작동하는걸 봤다. 작업 당시에 찾아보고 사용하기는 했지만 블로그에 기록을 남겨 두면 좋을거 같아, 이번에 남기기로 했다!
자바스크립트에는 2개의 동등연산자가 존재한다 ==
, ===
이 둘의 차이는?
Equality : (==)
Strict equality : (===)
==
연산자는 피연산자가 서로 다른 타입이면 타입을 강제로 변환하여 비교한다.
console.log(1 == 1);
// expected output: true
console.log('hello' == 'hello');
// expected output: true
console.log('1' == 1);
// expected output: true
console.log(0 == false);
// expected output: true
===
연산자는 변수의 타입까지 비교하여 연산한다
console.log(1 === 1);
// expected output: true
console.log('hello' === 'hello');
// expected output: true
console.log('1' === 1);
// expected output: false
console.log(0 === false);
// expected output: false
주로 엄격한 동등 연산자 ===
를 사용하는게 좋을거 같고, ==
를 활용해서 형 변환 없이 간단하게 작성할 수 있다. 그래도 명시적으로 형 변환을 하는게 읽는 사람 입장에서 좀 더 이해하기 쉬울거 같다