ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS] 원시타입 || 기본 자료형 (Primitive Type)
    간단정리 2020. 7. 8. 10:11

    Javascript에서는 원시 타입(Primitive Type)참조 타입(Reference Type) 두 가지 자료형을 제공한다. 자바스크립트는 느슨한 타입 언어 || 동적 언어이다. 이 말은 변수의 타입을 미리 지정할 필요가 없다는 의미이다. 타입은 프로그램이 처리되는 과정에서 자동으로 파악되고, 같은 변수에 여러 타입의 값을 넣을 수 있다는 뜻이다.

     

    * 그렇기 때문에 프로그램 규모가 커질 수록, Typescript와 같은 대체제를 사용한다. (타입에 따른 실수를 방지 하기 위한 방법이자 도구이다.)

      var test;             // undefined
      test = null;          // null    
      test = 1206;          // Number
      test = "Ryuk";        // String
      test = true;          // Boolean
      test = Symbol("key"); // ES6 추가 Symbol

    (1) undefined

    * 선언되었지만, 초기화가 되지 않음을 의미한다.

    * undefined 타입은 undefined만 갖을 수 있다.

    * 초기화가 진행 된 변수를 다시 undefined로 초기화를 할 수 있다. 하지만, 다시 값이 없음을 의미하기 위해 null이 존재하기 때문에 우리는 값이 undefined일 경우 초기 생성 된 상태라는 것으로 상태를 사용할 수 있을 것 이다.

      var test;               // undefined
      test = "something";     // string
    
      // undefined 하지만, 보통 초기화 된 상태에서는 다시 undefined으로 초기화 하지 않는다.
      test = undefined;       // undefined

    (2) null

    * 값이 없음을 의미한다.

    * null 타입은 null만 갖을 수 있다.

      var test;       // undefined
      test = null;    // null

    (3) Boolean

    * 논리적 요소를 나타내는 타입이고, true와 false 두 값을 갖을 수 있다.

    * 0 - false 그 외, 모든 값은 true이다.

    (4) Number

    * 정수, 실수, 음수를 표현할 수 있다.

    * +,- Infinity / +,- 0 / Number.MAX_VALUE, Number.MIN_VALUE / NaN (숫자 아님)등 다양한 상수값과 무한대, 0을 양수 음수로 표현하는 등 많은 기능이 있다.

    * Number.MAX_SAFE_INTEGER(9007199254740991), Number.MIN_SAFE_INTEGER (-9007199254740991) 해당 범위를 벗어나면 JS에서 숫자는 더 이상 안전하지 않다.

    * 다루는 숫자가 커진다면, BigNumber 라이브러리를 활용하거나 직접 만들어야 한다. 16자리가 넘어간다면 JS Number를 다시 찾아봐야한다는 정도만 인지 하고 넘어가면 될 것 같다.

    (5) String

    * 문자 || 텍스트를 나타내는 타입이다.

    * 정규식을 통하여, string 형식을 바꿀 수 있다.

    * JS 문자열은 변경 불가능 상태(immutable)이다. 문자열이 한번 생성 되면, 중간중간 특정 값들을 수정할 수 없다는 이야기다. 하지만, String.substr(), String.concat() 등을 활용하여 다시 변수에 대입하여 재활용 할 수 있다.

      // 정규식을 통한 toLocaleString()
      // 1206 -> 1,206
    
      var test = 1206;
      test.toString().replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,");
      var test = "안냐세여~~"
    
      // immutable하기 때문에 ~~ 만 삭제할 수 없다.
      // 하지만, 함수들을 활용해서 변경할 수 있다.
    
      test = test.substr(0, 4);  // 안냐세여

    (6) Symbol

    * ES6 (ECMAScript 6)에서 추가 되었다. symbol은 유일하고 변경 불가능(immutable)한 타입이다.

    * 객체 속성의 key값으로 사용 될 수 있고, C언어의 enum과 비슷하다.

    * Symbole을 정확하게 이해하고 공감하려면, object & key에 대하여 먼저 알아야할 것 같다.

      var symbol = Symbol("abc");   // Symbol(abc)
      var symbol2 = Symbol("abc");   // Symbol(abc)
    
      // 같은 값의 key를 대입하여도, Symbol로 선언하면 같지 않다.

    댓글

Developer RyuK