[JS] Equal Operator, ==와 ===의 차이

Janet·2023년 2월 20일
0

JavaScript

목록 보기
18/26

🔷 Equal Operator?

  • Equal Operator : ==
    - 값만 같으면 True
  • Strict Equal Operator : ===
    - 값과 값의 Type도 같아야 True

🔷 예시

let a = 1;
let b = "1";
console.log(a == b); // true
console.log(a === b); // false

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

  • --는 0과 "", null과 undefined를 동일한 값으로 본다.
console.log(0 == ""); // true
console.log(0 === ""); // false

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

  • Not a Number의 경우 숫자가 아닌 값이지만, 그 값은 동일하다고 볼 수 없다.
console.log(NaN == NaN); // false
console.log(NaN === NaN); // false

  • 변수 선언 시, 각 변수는 참조하는 메모리의 주소가 다르게 할당되어 진다. 따라서 아래와 같이 값과 값의 타입이 동일하여도 false인 것이다.
let arr1 = [1, 2, 3, 4];
let arr2 = [1, 2, 3, 4];
console.log(arr1 == arr2); // false
console.log(arr1 === arr2); // false

  • 다음과 같이 배열 a와 b는 같음이라고 선언한다면 true이다.
let a = [1, 2, 3, 4];
let b = [1, 2, 3, 4];
a = b;
let c = b;

console.log(a == b); // true
console.log(a === b); // true

console.log(c == b); // true
console.log(c === b); // true

  • 마찬가지로 배열이든 객체든 선언한 것은 할당되어지는 메모리의 주소가 다르기에 값이 같아도 false이다.
let a = [];
let b = [];
console.log(a == b); // false
console.log(a === b); // false

let c = {};
let d = {};
console.log(c == d); // false
console.log(c === d); // false
profile
😸

0개의 댓글