
Javascript에는 값을 비교 하기 위해 사용되는 비교 연산자인 == 연산자와 === 연산자가 존재한다.
두 가지 모두 값이 일치하면 true를, 일치하지 않으면 false를 반환한다. 그럼 어떤 차이가 있을까?
== 연산자Equal Operator, 동등 연산자라고 지칭한다. 두 값을 비교할 때 서로의 타입이 다른 경우 자동으로 연산자 타입을 일치하게 변환한 후 값을 비교한다.
50 == 50 // true
50 == '50' // true
1 == true // true
true == 'true' // true
null == undefined // true
=== 연산자Strict Equal Operator, 일치 연산자 혹은 엄격한 비교 연산자라고 지칭한다. 동등 연산자와 다르게 타입이 서로 달라도 변환하지 않고 있는 그대로의 값을 비교한다.
50 === 50 // true
50 === '50' // false
1 === true // false
true === 'true' // false
null === undefined // false
NaN === NaN // false , 자기 자신을 포함하여 어떠한 값과도 일치하지 않음
동등 연산자의 경우 자동으로 타입을 변환해주는 속성이 있기에, 예상치 못한 예외가 발생할 수 있다. 따라서 엄격한 비교 연산자를 사용하고, 타입의 변환이 필요한 경우 직접 자료형을 변환하는 것이 코드의 가독성을 높여줄 수 있는 좋은 수단이 된다.