==, === 차이점
자바스크립트에는 equality (==) 와 Strict equality (===) 의 두가지 연산자가 존재한다. 두 연산자 모두 두개의 값이 같은지 다른지를 판단하는 연산자 이지만 하나는 Strict이 붙어있고, 하나는 Strict이 붙어있지 않다. 영어단어 그대로 해석해보자면 Strcit은 엄격한 이라는 뜻이고 Strict equality (===)은 보다 엄격하게 피연산자가 동일한지를 판단해준다.
equality (==) x==y
자바스크립트에는 타입이 존재하는데 String, Number, null, undefined, symbol, boolean, bigint 총 7가지의 타입이 존재한다.
동등연산자는 피연산자의 타입까지 비교해주지는 않지만 일치연산자는 피연산자의 타입까지 일치하여야 일치한다는 값을 반환한다.
console.log('1' == 1) true // console.log('1' === 1) false
위와 같이 동등연산자는 숫자와 문자열을 비교할때 문자를 숫자열로 자동으로 반환해 값을 비교하므로 문자열 '1' 과 숫자 1 이 같은값이라는 true 를 반환하는 반면 일치연산자는 두값의 타입까지 비교함으로 '1' 문자열 1과 1숫자 1의 타입이 같이 않으므로 false를 반환하는 것을 볼 수 있다.
console.log(null == undefined) true // console.log(null === undefined) false
값이 없음을 나타내는 null 과 undefined 또한 동등연산자로 비교하게 되면서로의 값이 일치한다는 결과값을 반환받을 수 있다. 두가지 타입이 가지는 의미는 엄격하게 서로 다르다. 따라서 일치연산자인 (===) 로 비교해보면 서로 다른값을 의미하는 false가 반환된다.
다양한예제들과 보다 자세한 설명은 MDN 으로 들어가서 확인 해 볼 수 있다. https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Equality (동등연산자)
레벨업