==와 ===의 차이점은 무엇입니까?[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 |
=== 연산자를 사용할 경우 첫 번째 예를 제외한 모든 비교는 유형이 동일하지 않기 때문에 거짓으로 반환되고 두 개의 유형과 값이 동일하기 때문에 첫 번째 예는 참으로 반환됩니다.
'JAVAscript (자바스크립트)' 카테고리의 다른 글
[Javascript]!! 연산자의 역할 (0) | 2021.04.13 |
---|---|
[Javascript]JavaScript에서 유사한 두 개체를 비교할 때 false가 반환되는 이유 (0) | 2021.04.13 |
[Javascript]event.currentTarget 이란? (0) | 2021.04.13 |
[Javascript]Event.target 이란? (0) | 2021.04.13 |
[Javascript]obj.someprop 오류 원인 (0) | 2021.04.13 |