자바스크립트의 타입

이동규·2023년 8월 14일

JAVASCRIPT

목록 보기
10/21

타입의 종류

  • primitive type: Number,String,Boolean,null,undefined,symbol이 있으며 값을 복제한다.
  • reference type: Array,Function,Date,RegExp,Map,WeakMap,
    Set,WeakSet 참조값을 복제한다.
  • 기본형 데이터와 참조형 데이터

    변수와 상수를 구분하는 것은 변수영역의 메모리(StackMemory)이다. 즉, stack에 있는 값을 바꿀수 있으면 변수이고 바꿀수 없으면 상수이다.

      let a =1;
      const b =10;

    상수와 불변성

    상수와 불변성을 오해하기 쉽다.

    let a  = 'abc';
    let a = a + 'def'; // 'abcdef'을 stack에 생성하고 변수 a에 저장
    let a = 1;// 1을생성
    let a  = 2;// 스택 메모리에 2를 생성하고 2의 주소값을 a를 할당  
    let c = 1;// 스택 메모리에 있는 1의 주소값을 c에 할당  (만약 없으면 값을 할당)
    

    1. Heap 메모리의 주소가 callstack에 참조되지 않으면 Garbage collector의 관리를 받는다.callstack 값이 변수에 값이 할당하지 않으면 마찬가지이다.

    2. 정수형에서 C 와 Java는 stack 메모리에 값을 저장하며 새로운 값을 같은 주소에 다시 저장한다.

    3. 숫자형은 기본적으로 8bytes를 가진다.그리고 불변성이다. 값이 변경되면 메모리 주소가 바뀐다.

    let a= 1;
    let b =1;//
    ++b;// b변수의 스택 메모리의 값(주소값)이 변경이 된다.값도 바뀐다.
    --b;// b의 변수의 주소 값이 a와 동일해진다. 2의 값은 garbagecollector의 관리를 받는다. 
    

    원시 값을 가진 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달된다. 이를 call by value 또는 pass by value 라고 한다

    javascript의 원시데이터는 stack을 사용한다.

    undefined와 null의 차이점

    • undefiend : 변수는 존재하나, 어떠한 값으로도 할당되지 않아 자료형이 정해지지(undefined) 않은 상태
    • null : 변수는 존재하나, null 로 (값이) 할당된 상태. 즉 null은 자료형이 정해진(defined) 상태

    0개의 댓글