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를 테스트해서 강제형변환을 막아 오류를 막을 수 있다.


'전체 > JS & Jquery' 카테고리의 다른 글

JS 표현식(expressions)  (0) 2019.04.09
JS scope from function, collision avoidance  (0) 2019.04.09
JS Implicit Coercion(형변환)  (0) 2019.04.08
js value와 reference  (0) 2019.03.12
js primitive type  (0) 2019.03.10

+ Recent posts