• 모닥위키모닥위키
  • 모닥위키
위키
  • 임의문서
  • 주간인기
  • 문서
  • 시리즈
    AAAdddvvveeerrrtttiiissseeemmmeeennntttAdvertisement

    © 2025 modak.wiki All rights reserved.

      기본 자료형

      Chapter 2 - Primitive Types

      컴퓨터/IT학습
      lu

      luasenvy (luasenvy)

      CC BY 4.0 국제규약

      Mutable and Immutable

      자바스크립트에서 변수는 가변형(Mutable)과 불변형(Immutable) 두가지로 나뉜다. 변수를 사용한다는 말은 곧 '메모리를 사용한다'와 같으며 변수로 작동하는 모든 값은 메모리를 통해 활용된다. 이 메모리에 저장된 값을 사용하기 위한 방법으로 이 두가지 방식이 제공되는 것이며 각각 'Call by Reference', 'Call by Value' 라는 이름으로도 알려져 있다.

      call_by_reference.js
      /** ****************************
       * Mutable                     *
       * *************************** */
      const mutable = [4,3,2,1];
      const variable = mutable;
      
      variable.sort();
      
      console.log(mutable); // [1,2,3,4]
      

      가장 큰 특징으로 가변형 변수에 값이 할당되면 이 변수를 사용하는 모든 곳의 값이 변경된다는 점이다. 가변형은 이런 복잡함 때문에 악명이 높은데 'Pointer' 또는 '참조형' 이라고 불리우는 것도 같은 맥락이다. 이 모든 특징은 변수가 가지고 있는 것이 '값이 아니라 메모리 주소'이기 때문이다.

      Call by Reference Diagram
      const mutable  ── 메모리 주소 ── 메모리 공간 ── [4,3,2,1]
      const variable ── 메모리 주소 ────┘
      

      모식도로 표현한다면 이런 식으로 작동하게 된다. 두 변수는 가변형이므로 메모리 주소만 가지고 있다. 어느 변수를 사용해도 메모리 주소가 가리키는 공간의 값이 변경되는 것이므로 두 변수의 값이 모두 동일하게 바뀐다.

      call by value.js
      let immutable = "hello, world! :)";
      let variable = immutable;
      
      immutable = "CHANGE_VARIABLE"
      
      console.log(variable); // "hello, world! :)"
      
      Call by Reference Diagram
      const immutable  ── 메모리 공간 ── "hello, world! :)"
      const variable ── 메모리 공간 ── "CHANGE_VARIABLE"
      

      Object를 제외한 나머지는 모두 불변형으로 할당된다. 값이 직접 할당되기 때문에 예제처럼 immutable, variable 변수는 그 어떠한 연관이 없는 별개의 변수가 된다. 그래서 가변 데이터와는 다르게 코드상 원본값으로 보이는 immutable 변수의 값을 변경한다 하더라도 아무런 영향이 없다.

      Primitive Values

      Object를 제외한 모든 유형은 다시 Primitive Values 라고도 말하며 null, undefined, boolean, number, string이 있다. 이 유형들은 모두 typeof() 함수를 통해 유형을 검사할 수 있는데 예외적으로 null의 경우 검사할 수 없다. 이는 Object로 구현된 특수한 객체이기 때문이다.

      Reference

      Primitive Values를 제외한 유형 즉 Object 형태는 Reference라고도 말한다. 굳이 예를 들자면 배열이나 함수를 들 수 있겠지만 자바스크립트에서 기본 자료형을 제외한 모든 객체는 최상위 클래스로 Object를 가지므로 '기본형을 제외한 모든 것'이라고 이해하면 된다. Object.freeze() 함수를 활용하면 명시적으로 불변하게 만들 수도 있다.

      초판: 2024. 08. 15. 03:47:40

      © 2024 이 문서는 "CC BY 4.0 국제규약" 라이선스로 배포 되었습니다. 모든 권리는 저자에게 있습니다.

      기본 자료형

      Mutable and Immutable
      Primitive Values
      Reference