Posis

[JavaScript] Equality(==) 지양 혹은 줄이기 본문

JavaScript

[JavaScript] Equality(==) 지양 혹은 줄이기

CooNiHong 2021. 12. 6. 16:57

Equality란?

Equality는 동등 연산자를 말하는데 두 개의 피연산자가 동일한지 체크하고 Boolean값인 true와 false를 판별해주는 것을 말합니다.

Equality의 문제점

JavaScript는 동적인 언어인데 0과 ''을 비교하면 어떤 값이 출력되는지 아시나요?

console.log(0 == ''); // true

Number와 String을 비교하는데 왜 true가 나올까요. 이는 JavaScript Equality에서 타입을 비교하지 않고 피연산자를 체크하기 때문입니다. 0과 ''은 둘 다 false로 인지하기 때문에 false == false로 생각하고 true라는 값을 출력하게 됩니다. 이를 보완하기 위해서 Strict Equality(===)가 있습니다.

Strict Equality

타입을 비교하지 않고 체크하는 Equality를 보완해서 나타난 Strict Equality는 타입까지 비교하여 두 개의 피연산자를 체크하게 됩니다. Strict는 해석하자면 엄격한이기 때문에 두 개의 값을 엄격하게 비교(타입까지 비교)를 하게 됩니다. 코딩을 할 때 Equslity(==)을 자주 사용하게 되면 어디선가 타입을 비교하지 않고 값을 체크하기 때문에 어떠한 에러가 나타날 수 있고 Strict Equality(===)을 사용한다면 나타나는 에러가 현저하게 줄어들 것입니다. 물론 Strict Equality를 사용한다고 에러가 완벽하게 나타나지 않는다고는 말하기 힘들 것 같습니다. 

반대를 비교하는 !=은 !==으로 사용하면 됩니다.

정리

모든 상황에서 Strict Equality를 사용하는 것이 정답은 아니지만 Equality를 지양함으로써 코드에 에러를 줄일 수 있다.

Equality는 형변환을 하기 때문에 의도치 않는 결괏값을 도출해낼 수 있다.

Strict Equality는 형변환을 하지 않고 타입까지 비교하기 때문에 내가 생각한 결괏값을 도출할 가능성이 높다.


https://dorey.github.io/JavaScript-Equality-Table/

 

JS Comparison Table

=== (negated: !==) When using three equals signs for JavaScript equality testing, everything is as is. Nothing gets converted before being evaluated.

dorey.github.io

이 사이트에서 한번 확인하면 얼마나 차이가 심한지 확인해볼 수 있습니다.

728x90