🔷 Equal Operator?
- Equal Operator :
==
- 값만 같으면 True
- Strict Equal Operator :
===
- 값과 값의 Type도 같아야 True
🔷 예시
let a = 1;
let b = "1";
console.log(a == b);
console.log(a === b);
console.log(0 == "0");
console.log(0 === "0");
--
는 0과 "", null과 undefined를 동일한 값으로 본다.
console.log(0 == "");
console.log(0 === "");
console.log(null == undefined);
console.log(null === undefined);
- Not a Number의 경우 숫자가 아닌 값이지만, 그 값은 동일하다고 볼 수 없다.
console.log(NaN == NaN);
console.log(NaN === NaN);
- 변수 선언 시, 각 변수는 참조하는 메모리의 주소가 다르게 할당되어 진다. 따라서 아래와 같이 값과 값의 타입이 동일하여도 false인 것이다.
let arr1 = [1, 2, 3, 4];
let arr2 = [1, 2, 3, 4];
console.log(arr1 == arr2);
console.log(arr1 === arr2);
- 다음과 같이 배열 a와 b는 같음이라고 선언한다면 true이다.
let a = [1, 2, 3, 4];
let b = [1, 2, 3, 4];
a = b;
let c = b;
console.log(a == b);
console.log(a === b);
console.log(c == b);
console.log(c === b);
- 마찬가지로 배열이든 객체든 선언한 것은 할당되어지는 메모리의 주소가 다르기에 값이 같아도 false이다.
let a = [];
let b = [];
console.log(a == b);
console.log(a === b);
let c = {};
let d = {};
console.log(c == d);
console.log(c === d);