LHJ

I'm a FE developer.

2-9. 기본 문법 / Number 타입, String 타입

16 Nov 2020 » js_beginner

14. Number 타입, String 타입

데이터 타입 분류 (ES5 기준)

  • 언어 타입과 스펙 타입
  • 언어 타입

    • JS 프로그램에서 사용할 수 있는 타입
    • undefined, null, boolean, String, Number, Object

  • 스펙(문서) 타입

    • 언어 알고리즘을 위한 타입으로 JS 프로그램에서 사용 불가
    • Reference, List, Completion, Property Descriptor, Data Block, Lexical Environment, Lexical Record 등

Number 타입

  • Number 타입

    • 부호(+, -)를 가진 값

        var point = 123;
        console.log(typeof point); // number
              
        point = -1.23;
        console.log(typeof point); // number
      

  • 숫자 값 범위

    • 18,437,736,874,454,810,627
      (2의 64승 - 2의 53승 + 3)
      뒤의 +3은 뭘까? Number에는 특수한 형태 3가지가 더 추가가 됩니다.
      아래 Number 타입의 특수한 3개 값에 대한 설명이 있습니다.

  • Number 타입의 특수한 3개 값

    • NaN : Not-a-Number

        // 가장 자주 사용하는 특수값 NaN - 숫자가 아니라는 시맨틱을 갖고있다.
        // 그러면서도 값이다.
        var point = 1 * "A";
        console.log(point); // NaN
      
      1. NaN는 값이 숫자가 아닌 것을 나타내는 값입니다.
    • Infinity : 양수 무한대
    • -Infinity : 음수 무한대

var point = 1 * "A";
console.log(point); // NaN

1 * “A”는 계산을 할 수 없는 식입니다.
즉 위 코드에서 에러가 발생해 코드가 멈춰야만 합니다.
그런데 에러가 발생 안하고 NaN이 출력되었습니다.

자바스크립트는 이와 같이 숫자가 아닌 것을 연산할 때도 프로그램이 죽지않고 연산결과가 ‘숫자가 아닙니다.’를 나타내는 NaN 값을 point 변수에 할당합니다.
이것은 자바스크립트의 특징이며 성향입니다.
되도록이면 프로그램을 죽지않게 하려는 그런 성향과 특성을 갖고 있습니다.

코드의 일부분이 틀리더라도 다른 부분들을 죽지않게하고 돌아가게끔 하겠다는 것이 자바스크립트의 방향성입니다.
프로그램이 죽지않게 하기위한 시멘틱으로 1 * “A”의 값은 NaN으로 설정을 하는 것입니다.

var point = 1 * "A";
if (isNaN(point)) {
    // 개발자가 NaN인지 여부를 파악한 후에 다른 처리를 할 수 있는 여유가 생겼다.
}

String 타입

  • 문자 타입

    • 값을 “” 또는 ‘’ 사이에 작성
    • 최대 문자수 : 2의 53승 -1

  • 큰따옴표와 작은따옴표를 같이 사용할 때

    • 따옴표 작성 방법

        var point = "책, '123'";
        console.log(point); // 책, '123'
              
        point = '책, "123"';
        console.log(point); // 책, "123"
      
      1. 작은따옴표를 표시하려면 큰따옴표 안에 작은따옴표를 작성합니다.
      2. 큰따옴표를 표시하려면 작은따옴표 안에 큰따옴표를 작성합니다.

  • 따옴표에 숫자를 작성하면 문자 타입이 됩니다.

      var value = "123";
      console.log(typeof value); // string
    
    1. 123이 Number 타입에서 String 타입으로 변환됩니다.