일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Algorithm
- scss
- string
- 백준
- 파이썬
- 코딩테스트
- Python
- JavaScript
- dynamic programming
- greedy
- hash table
- github
- JavaSceipt
- java
- 자료형
- math
- CSS
- 알고리즘
- 프로그래머스
- leetcode
- HTML
- 컴포넌트
- 자료구조
- array
- 변수
- sorting
- JS
- computed
- SasS
- vue.js
- Today
- Total
Posis
[JavaScript] Equality(==) 지양 혹은 줄이기 본문
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/
이 사이트에서 한번 확인하면 얼마나 차이가 심한지 확인해볼 수 있습니다.
'JavaScript' 카테고리의 다른 글
[JavaScript] 비구조화 할당 (0) | 2021.12.27 |
---|---|
[JavaScript] 배열 내장 함수 (1) | 2021.12.16 |
[JavaScript] var를 지양해야 하는 이유 (0) | 2021.12.03 |
[JavaScript] 이벤트 버블링(Bubbling)과 캡쳐링(Capturing) (0) | 2021.10.26 |
[JavaScript] Ajax 란? (0) | 2021.10.20 |