[JavaScript] Ch12

jinjoo-jung·2023년 8월 22일

JavaScript

목록 보기
16/17

심볼(Symbol)

  • 변경이 불가한 데이터로, 유일한 식별자를 만들어 데이터를 보호하는 용도로 사용할 수 있다.
  • Symbol('설명') : '설명'은 단순 디버깅을 위한 용도일 뿐, 심볼 값과는 관계가 없다

불변성 & 가변성

  • 불변성(Immutability)은 생성된 데이터가 메모리에서 변경되지 않는다

  • 가변성(Mutability)은 생성된 데이터가 메모리에서 변경될 수 있음을 의미

  • 자바스크립트 원시형(null, 문자, 숫자, undefined, boolean, symbol, binInt)은 불변성
    참조형(객체데이터, 배열 함수)은 가변성을 가지고있다.

  • 원시형은 일단 모양이 같으면 서로 같다고 볼 수 있는데, 참조형 데이터인 객체 데이터는 모양이 같더라도 같다고 인식하지 않아 false가 나온다.

얖은 복사 깊은 복사

  • 참조형은 가변성으로 인해, 데이터를 복사할 때 주의가 필요

  • 얕은 복사 (Shallow Copy) : 참조형의 1차원 데이터만 복사

  • 깊은 복사(Deep copy) : 참조형의 모든 차원 데이터를 복사

    가비지 컬렉션(GC, Garbage Collection, 쓰레기 수집)

  • 자바스크립트의 메모리 관리 방법으로 자바스크립트 엔진이 자동으로, 데이터가 할당된 메모리에서 더 이상 사용되지 않는 데이터를 해제하는 것을 말한다.

  • 가비지 컬렉션은 개발자가 직접 강제 실행하거나 관리할 수 있다.

    클로저

  • 함수가 선언될 때의 유효범위(렉시컬 범위)를 기억하고 있다가, 함수가 외부에서 호출될 때 그 유효범위의 특정 변수를 참조할 수 있는 개념을 말한다.

  • let이라는 키워드는 재할당을 위해 사용되는 키워드인데,

메모리 누수(Memory Leak)

더 이상 필요하지 않은 데이터가 해제되지 못하고 메모리를 계속 차지하는 현상

  • 불필요한 전역 변수 사용
  • 분리된 노드 참조
  • 해제되지 않은 타이머
  • 잘못된 클로저 사용

콜 스택, 테스트 큐, 이벤트 루프

profile
개인 개발 공부, 정리용 🔗

0개의 댓글