[JS] == vs ===

Updated:

== vs ===

둘다 동일한 비교를 하지만 엄격한 동등 비교 연산자(===)의 경우, 타입변환(Type conversion)이 일어나지 않으며 타입이 일치 해야한다.

'' ==  0    //false
0 == ''     //true
0 == '0'    //true

false == 'false'    //false
false == '0'        //true

false == undefineed  //false
false == null        //false
null == undefined    //true 

' \t\r\n ' == 0 //true

위 경우를 보면, 동등 비교 연산자(==)를 사용해서 여러가지 원시타입을 비교해보았는데, 타입변환이 발생함을 볼 수 있다.

단, 객체/배열의 경우는 참조타입이기 때문에 두 연산자 모두 동일하게 동작한다

var a = {}
var b = {}

a == b  //false
a === b //false 

var c = []; 
var b = [];

c == d  //false
c === d //false 

문자열의 경우는 좀 특별한데, 자바스크립트에서 문자열은 원시타입이지만 객체로도 만들 수 있기때문에 그 동등 비교가 다르다.

var a = "string"
var b = new String("string")
a == b  //true
a === b //false

퍼포먼스 측면에서는 아주 미묘한 차이가 있기 때문에 신경 쓸 바가 못됨, 안전한 타입체크와 더 좋은코드를 위해 비교 연산자(===)를 사용하는것이 바람직하다.

Tags:

Categories:

Updated:

Leave a comment