[JS_memo] 자바스크립트 타입, 얕은 비교, 깊은 비교

Lina Hongbi Ko·2023년 12월 2일
0

JavaScript_memo

목록 보기
7/7

자바스크립트 타입

  • 원시타입
    • 불리언(Boolean)
    • 문자열(String)
    • 숫자(Number, Int)
    • null,
    • undefined,
    • Symbol
    • 원시 타입 데이터는 변수에 할당될때 그 값 그대로 스택에 저장됨 -> 변수 선언, 초기화, 할당시 값이 저장된 메모리 영역에 직접적으로 접근
    • 원시 타입을 할당한 변수를 새 값으로 바꾸면 그 값 자체를 변경함
let number = 10;
let number2 = number;

number2 = 10000;

console.log(number) // 10
console.log(number2) // 10000
  • 참조타입
    • 객체(Object)
    • 배열(Array)
    • 함수(Function)
    • 참조 타입 데이터는 변수에 값을 할당할 때 값을 직접 저장하는 것이 아니라, 주소의 값을 힙에 저장시킴
    • 변수의 값이 저장된 Heap 주소를 가져서, 주소를 이용해 접근
    • 따라서 두 객체가 같은 주소를 가르키 만들고 하나의 객체를 변경하면 두 객체 모두 변경됨
let arr = [1, 2, 3];
let arr2 = arr;

console.log(arr === arr2) // true
arr.push(4);
console.log(arr) // [1, 2, 3, 4]
console.log(arr2) // [1, 2, 3, 4]

얕은 비교

: 원시 타입은 '값'을 비교하고, 참조 타입은 '주소'를 비교한다.

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

const obj1 = {a: 1, b: 2};
const obj2 = {a: 1, b: 2};
console.log(obj1 === obj2) // false

깊은 비교

: 얕은 비교와 달리 깊은 비교는 참조 타입(객체의 경우)에도 '값'을 비교

let obj = {a: 1, b: 2};
let obj2 = {a: 1, b: 2};

console.og(obj === obj2) // false
console.log(JSON.stringify(obj) === JSON.stringify(obj2)) // true

출처

https://j-plum.tistory.com/31

profile
프론트엔드개발자가 되고 싶어서 열심히 땅굴 파는 자

0개의 댓글