동등 연산자(==)는 두 개의 피연산자가 동일한지 확인, 불리언 결과를 반환한다.
일치 연산자(===)와 다르게 다르게 다른 타입의 피연산자들끼리의 비교를 시도한다.
예시 코드를 가져왔는데 간단하게 생각하면 타입에 느슨한 느낌이다.
console.log(1 == 1);
// output: true
console.log('hello' == 'hello');
// output: true
console.log('1' == 1);
// output: true
console.log(0 == false);
// output: true
true
를 반환한다.true
를 반환한다.true
를 반환한다.NaN
일 시에는 항상 서로 다르므로 false
를 반환한다.true
를 반환한다.true
를 반환한다.true
를 반환한다.null
이거나 undefined
일 때 true
를 반환하기 위해 다른 하나가 무조건 null
or undefined
이어야 한다.문자열, 숫자, 불리언, 심볼, BigInt
가 있다.타입이 같다면 1번(두 연산자가 동일한 타입일 때)을 따른다.
심볼 && not 심볼 -> false
를 반환한다.
불리언 && not 불리언 -> 불리언을 숫자로 변환한다. true
를 1로, false
는 0으로 변환하고 다시 느슨한 비교를 한다.
숫자 && 문자열 -> 문자열을 숫자로 변환한다. 변환 실패의 결과는 NaN
이어서, 비교 결과가 false
라는 것을 보장한다.
숫자 && BigInt -> 숫자 값으로 비교한다. 숫자가 Infinity 거나 NaN
면 false
를 반환한다.
숫자 && BigInt -> 문자열을 BigInt() 생성자와 같은 알고리즘으로 BigInt로 변환한다. 변환이 실패하면 false
를 반환한다.