상세 컨텐츠

본문 제목

[JavaScript] JavaScript #2: 데이터 타입, 변수, 동적 타이핑(Dynamic Typing), 변수 호이스팅(Variable Hoisting)

PROGRAMMING/Web

by koharin 2021. 1. 29. 19:07

본문

728x90
반응형

데이터 타입


1. 원시 타입

  • 변경 블가능한 값, pass-by-value(값에 의한 전달)
  1. boolean

    • true, false
  2. null

    • false로 간주한다. (boolean type)

    • 변수에 값이 없음을 명시하려면 null 값을 할당한다.

    • Null, NULL과 다르다.

    • typeof로 null 값을 가지는 변수의 타입을 출력해보면 object가 나오는데, 이것은 자바스크립트 설계 상의 오류라고 한다.

      var foo = null;
      console.log(typeof foo); // object
    • null 타입 확인: 일치 연산자(===) 사용

      var foo = null;
      console.log(typeof foo === null); // false
      console.log(foo === null);        // true
  3. undefined

    • false로 간주한다. (boolean type)

    • 선언하고 값을 할당하지 않은 변수가 가지는 값 (자바스크립트 엔진에 의해 초기화된 값)

    • 존재하지 않는 객체 property에 접근할 경우

      var foo;
      console.log(foo); // undefined
  4. number

    • 모든 수를 실수로 처리.
    • -(2^53-1) ~ 2^53-1 사이 범위
    • 10진수로만 해석한다. (2진수, 8진수, 16진수 데이터 타입 제공 X)
    • Infinity: 양의 무한대, -Infinity: 음의 무한대, NaN: 산술 연산 불가(Not a Number)
    • 숫자 0은 false로 간주한다. (boolean type)
  5. string

    • 작은 따옴표(''), 큰 따옴표("")에 텍스트 넣어 문자열을 표현하는데, 일반적으로는 작은 따옴표('')를 사용한다.

    • 문자열을 변경할 수 없다. 기존의 문자열을 변경하는 것이 아닌, 새로운 문자열로 재할당하면 새로운 문자열을 새롭게 할당하게 된다.

      var str = 'string';
      str[0] = 'S'; // 변경 불가
      console.log(str); // result: string
    • 비어있는 문자열은 false로 간주한다. (boolean type)

  6. symbol

    • ES6에서 새롭게 추가된 타입
    • 객체(object)의 property key를 생성하기 위해서 사용한다.
    • Symbol 함수 호출해서 심볼을 생성한다.

 

2. 객체 타입

  • object
    • property(이름, 값 가지는 데이터) & method(동작) 포함하는 독립적 주체
    • 원시 타입 제외한 모든 값(배열, 함수, 정규표현식 등) == 객체
    • pass-by-reference(참조에 의한 전달)

 

변수


1. 변수명

  • 변수에 명시한 고유한 식별자

2. 변수값

  • 변수로 참조할 수 있는 데이터

3. 변수의 선언, 할당, 참조

  • 선언: var, let, const 키워드

    • 중복 선언 가능

      var person = 'Lee';
      address = 'Seoul';
      price = 200;
  • 할당: 할당 연산자(=) 사용

  • 참조: 변수명 사용해서 변수에 저장된 값 참조

    • undefined: 값을 할당하지 않은 변수의 초기값

    • ReferenceError: 선언하지 않은 변수 접근 시 오류

      var x;
      console.log(x); //undefined
      console.log(y); //ReferenceError

 

동적 타입(Dynamic Type)


  • Type Inference: 값이 할당되는 과정에서 값의 타입이 자동으로 결정된다.
  • Dynamic typing: 하나의 변수에 여러 타입의 값을 할당할 수 있는 것

 

변수 호이스팅(Variable Hoisting)


  • 자바스크립트에서는 모든 선언문(var, let, const, function, function*, class)이 선언되기 전에 참조할 수 있다.

    console.log(foo); // undefined. ReferenceError 발생 X
728x90
반응형

관련글 더보기