자바스크립트가 값을 강제적으로 변환시킨다

by leonardomso & jakeseo_me # #

5. == vs === vs typeof

자바스크립트에서 === 연산을 사용할 때, 우리는 엄격한 동등성을 비교합니다.

엄격한 동등성의 의미는 타입이 둘 다 같아야 한다는 이야기입니다.

== 표시 2개의 동등 비교연산자

우리가 자바스크립트에서 ==연산자를 쓰는 목적은 느슨한 동등 비교를 위함입니다.

==연산자도 강제 형변환(type coercion) 을 수행합니다.

강제 형변환(type coercion) 이란 동등 연산자로 비교하기 전에 피연산자들을 공통 타입(common type)으로 만드는 행위를 말합니다.

Falsy 값의 비교

이제 뒤의 예제들을 통해 falsy 값의 간단한 규칙을 알아볼 수 있을 것입니다. 자바스크립트로 자주 작업을 한다면 다음과 같은 내용들은 항상 기억하고 계시는 것이 좋습니다.

  1. false, 0 그리고 ""

아래의 3가지 falsy 값을 느슨한 동등 연산자로 비교할 때, falsy 값은 항상 동일하다는 결과를 나타냈습니다. 그게 가능했던 이유는 앞의 3가지 falsy 값은 false 형태로 강제 형변환이 됐기 때문이죠.

false == 0
// true

0 == ""
// true

"" == false
// true

  1. null 그리고 undefined

nullundefined를 비교할 때, 그들은 서로 같으며 자기 자신과도 같습니다.

null == null
// true

undefined == undefined
// true

null == undefined
// true

만일 null을 다른 값과 비교하고 싶다면, 아마 false가 나올 확률이 높습니다.