전체/JS & Jquery
JS ==, === 의 비교
effortDev
2019. 4. 8. 15:41
1. 자바스크립트에서 ==., ===
==는 loose equality할때 사용한다. 또한 ==은 형변환을 수행한다.
형변환 후에 오직 두개의 값 비교만 수행한다는 의미이다.
(Type coercion means that two values are compared only after attempting to convert them into a common type.)
===는 strict equality 할때 사용한다.
타입(type)과 값(value) 모두 비교했을때 같아야 한다.
2. === 비교
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | // Triple Equals 5 === 5 // true 'hello world' === 'hello world' // true (Both Strings, equal values) true === true // true (Both Booleans, equal values) 77 === '77' // false (Number v. String) 'cat' === 'dog' // false (Both are Strings, but have different values) false === 0 // false (Different type and different value) | cs |
type, value가 모두 같아야 true를
둘 중 하나라도 다르다면 false를 반환하는 것을 확인할 수 있다.
3. == 비교
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | // Double equals 77 === '77' // false (Number v. String) 77 == '77' // true false === 0 // false (Different type and different value) false == 0 // true | cs |
자바스크립트는 실제로 같은 타입으로 변환을 시도하여 형변환한다.
77 == '77' 에서 '77'은 number value로 쉽게 변환되어 true를 return 한다.
4. Falsy Value Comparison(거짓값 비교)
거짓값은 false, 0, "", null, undefined, NaN으로 총 6가지이다.
1. false — boolean false
2. 0 — number zero
3. “” — empty string
4. null
5. undefined
6. NaN — Not A Number
1. false, 0, and ""
1 2 3 4 5 6 7 8 | false == 0 // true 0 == "" // true "" == false // true | cs |
2. null and undefined
1 2 3 4 5 6 7 8 | null == null // true undefined == undefined // true null == undefined // true | cs |
3. NaN
1 2 3 4 5 6 7 8 | NaN == null // false NaN == undefined // false NaN == NaN // false | cs |
5. 테스팅 코드
Triple Equals는 double equals보다 우수하다.
가능하면 테스트를 위해 비교가 필요한 구문이 필요하다면 ===를 사용하는 것이 좋다.
type과 value를 테스트해서 강제형변환을 막아 오류를 막을 수 있다.