본문 바로가기

JAVAscript (자바스크립트)

[Javascript] == VS === 의 차이점

==와 ===의 차이점은 무엇입니까?[Javascript] == VS === 의 차이점

 

==와 ===의 차이점은 ==는 강제 후 값을 비교하고 ===는 강제 없이 값과 유형을 비교한다는 것입니다.

 

==에 대해 자세히 알아보겠습니다. 먼저 강압에 대해 이야기해보죠.

 

강제성은 값을 다른 유형으로 변환하는 프로세스입니다. 이 경우처럼 ==는 암묵적인 강제성을 수행합니다. ==에는 두 값을 비교하기 전에 수행해야 할 몇 가지 조건이 있습니다.

 

x == y 값을 비교해야 한다고 가정합니다.

 

1. x와 y가 같은 유형이면요. 그런 다음 === 연산자와 비교합니다.

 

2. x가 null이고 y가 정의되지 않은 경우 true를 반환합니다.

 

3. x가 정의되지 않고 y가 null이면 true를 반환합니다.

 

4. x가 type number이고 y가 type string이면 x ==를 Number(y)로 반환합니다.

 

5. x가 문자열이고 y가 숫자이면 숫자(x) == y로 돌아갑니다.

 

6. x가 부울이면 숫자(x) == y로 돌아갑니다.

 

7. y가 부울이면 x ==를 숫자(y)로 반환합니다.

 

8. x가 문자열, 문자열 또는 숫자이고 y가 type object이면 x ==를 Primitive(y)로 반환합니다.

 

9. x가 객체이고 x가 문자열인 경우, openitive(x) == y로 돌아갑니다.

 

10. 거짓으로 답하시오.

 

참고: ToPrimitive는 먼저 객체의 toString 메서드를 사용하여 객체의 원시 값을 가져옵니다.

 

예를 들어볼까요.

 

x y x == y
5 5 true
1 '1' true
null undefined true
0 false true
'1,2' [1,2] true
'[object Object]' {} true

 

이 예들은 모두 사실로 나타납니다.

 

첫 번째 예는 x와 y의 유형과 값이 동일하기 때문에 조건 1로 이동합니다.

 

두 번째 예는 비교하기 전에 y를 숫자로 변환하는 조건으로 이동합니다.

 

세 번째 예는 조건 2로 이동합니다.

 

네 번째 예는 y가 부울이기 때문에 조건 7로 이동합니다.

 

다섯 번째 예는 조건 8로 이동합니다. 배열은 1,2를 반환하는 ToString() 메서드를 사용하여 문자열로 변환됩니다.

 

마지막 예는 조건 10입니다. 객체는 [objectObject]를 반환하는 ToString() 메서드를 사용하여 문자열로 변환됩니다.

 

x y x === y
5 5 true
1 '1' false
null undefined false
0 false false
'1,2' [1,2] false
'[object Object]' {} false

 

=== 연산자를 사용할 경우 첫 번째 예를 제외한 모든 비교는 유형이 동일하지 않기 때문에 거짓으로 반환되고 두 개의 유형과 값이 동일하기 때문에 첫 번째 예는 참으로 반환됩니다.