=== 연산자

처음 자바스크립트를 사용했을 때 신기했던 연산자가 ===이다.
C++이나 파이썬에서는 없는 연산자였기 때문이다.

자바스크립트는 특이하게 같음을 확인하는 연산자가
===== 두 개가 있다.

===은 다른 언어의 ==과 비슷하다. 타입을 포함해 양쪽이 같은지를 확인한다.
반면 ==는 양쪽 인자의 타입이 다르면 형변환을 해서 값을 비교한다.

결과적으로 자바스크립트의 =====보다 느슨하다.

예시

설명보다는 예시를 보면 이해가 빠르다.

var a = 42; 
var b = "42"; 
console.log(a == b); // true 
console.log(a === b); // false 

console.log(null == undefined); // true 
console.log(null === undefined); // false 

console.log(true == 1); // true 
console.log(true === 1); // false 
console.log(false == 0); // true 
console.log(false === 0); // false 

console.log(0 == "0"); // true 
console.log(0 === "0"); // false 
console.log(0 == ""); // true 
console.log(0 === ""); // false  

NaN(Not A Number)은 표시는 동일하지만 다르다.

console.log(NaN == NaN); // false 
console.log(NaN === NaN); // false 

배열의 경우 주소를 비교하기 때문에 내용이 같더라도 false가 나온다.

var a = [1,2,3]; 
var b = [1,2,3]; 
console.log(a == b); // false 
console.log(a === b); // false 

아래 경우처럼 다른 변수에 복사하는 경우는 주소가 같기 때문에 true가 나온다.

var a = [1,2,3]; 
var b = [1,2,3]; 
var c = b; 
console.log(b === c); // true 
console.log(b == c); // ture

var x = {}; 
var y = {}; 
var z = y; 
console.log(x == y) // false 
console.log(x === y) // false 
console.log(y === z) // true 
console.log(y == z) // true 

리스트 비교

잠시 옆길로 새면 예시와 같이 리스트를 ==연산자로 비교할 수 없기 때문에
그래서 배열을 비교 할 때는 다른 방법을 사용해야 한다.

정렬이 되어 있다면 JSON.stringify().to_String()로 문자열로 변환해 비교하거나
반복문을 이용해 비교해야 한다.

(파이썬은 정렬되어 있다면 ==로 비교가 가능하다.)

!=== 연산자

!=연산자 처럼 !== 연산자도 있는데
=== 연산자와 동일한 기준으로 다름을 판단한다.

console.log(42 != "42"); // false
console.log(42 !== "42"); // true

Leave a comment