개발/JavaScript

【JavaScript】느슨한 동등(==)보다 엄격한 동등(===)을 추천하는 이유

고독한 쵸이 2023. 10. 8. 22:42
반응형

현재 진행하고 있는 프로젝트에서 보수 안건을 대응하던 중, 느슨한 동등으로 비교 연산을 수행하는 JavaScript 코드를 보게 되었다.

이전 프로젝트에서는 되도록 엄격한 동등을 사용하는 것을 권장했기 때문에, 궁금해서 찾아보게 되었다.

 


느슨한 동등과 엄격한 동등이란?

  • 느슨한 동등(==): 암묵적 타입 변환을 수행한 후, 값을 비교.
  • 엄격한 동등(===): 암묵적 타입 변환 없이, 타입과 값을 비교.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Equality_comparisons_and_sameness


느슨한 동등 vs 엄격한 동등

아래 url에서 느슨한 동등과 엄격한 동등을 그림으로 비교해 놓았다.

https://dorey.github.io/JavaScript-Equality-Table/#two-equals

 

느슨한 동등을 사용할 경우, 암묵적 타입 변환으로 타입을 일치시킨 후 비교를 하기 때문에 얼핏 보면 편리해 보일 수 있지만

boolean타입인 false와 문자열(혹은 숫자) 0을 같다고 인식하거나, 문자열 0을 0을 보관하고 있는 배열과 같다고 인식하는 등, 실제로는 다른 값을 같다고 인식하는 의도치 않은 결과를 마주할 수 있기 때문에, 특별한 이유가 없다면 엄격한 동등을 사용할 것을 권장하고 있다.  

JavaScript 느슨한 비교JavaScript 엄격한 비교
느슨한 동등 vs 엄격한 동등

이외에도 느슨한 동등과 엄격한 동등, 어느 쪽을 사용해야 하는가에 대한 의견을 찾아보면, 엄격한 동등을 사용해야 한다는 의견이 압도적으로 많음을 알 수 있다.

 


결론

느슨한 동등을 사용할 경우 의도치 않는 결과를 마주하게 될 가능성이 있으므로, 특별한 이유가 없다면 엄격한 동등을 사용하도록 하자.

반응형