ted0505
Computational Art & Study
ted0505
전체 방문자
오늘
어제
  • 분류 전체보기 (79)
    • Computer Science ( CS ) (0)
    • Computational Thinking (6)
    • 프로젝트 개발일지 (1)
    • Coding (52)
      • C++ (39)
      • JavaScript (2)
      • P5.JS (7)
      • Python (0)
      • HTML5 (1)
      • CSS (0)
    • Game Engine (18)
      • Unreal Engine 4 (18)
      • Unity (0)
    • Physically Based Rendering (0)
    • FilmMaking (0)
    • 잡다 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ted0505

Computational Art & Study

Coding/JavaScript

[JavaScript] 변수

2022. 8. 28. 13:22
해당 게시글은 '모던 자바스크립트 Deep Dive' 책을 토대로 작성하였습니다.

변수란

  • 변수는 값을 저장하기 위해 확보한 메모리 공간 자체를 의미한다.

식별자

  • 변수 이름을 식별자라고도 한다.
    • 식별자는 값이 아닌 메모리 주소를 기억하고 있다.
    • 메모리 주소를 통해 메모리 공간에 저장된 값에 접근한다.
  • 변수, 함수, 클래스 등 어떤 값을 구별해서 식별할 수 있는 고유한 이름을 모두 식별자라고 부른다.

자바스크립트의 변수 선언

  • 변수 선언 시 var, let, const 키워드를 사용한다.
    • ES6에서 let, const 키워드가 도입되기 전까지는 var 키워드로 변수를 선언하였다.
    • ES6로 넘어오면서 let, const 키워드 사용을 권장한다.
      • var 키워드의 단점 ~
var score;
  • 위 코드블록을 살펴보면 변수를 선언 후, 변수에 값을 해당하지 않아 비어있는 것 같이 보일 수 있으나
    • 확보된 메모리 공간에는 자바스크립트 엔진에 의해 undefined 라는 값이 암묵적으로 할당되어 초기화된다.
      • undefined 는 자바스크립트에서 제공하는 원시 타입의 값이다.
    • 자바스크립트의 독특한 특징이다.

변수 선언의 실행 시점과 변수 호이스팅

console.log(score);
var score;
  • 자바스크립트는 인터프리터에 의해 한줄씩 실행되므로 해당 코드를 실행 시 참조 에러(ReferenceError)가 발생할 것처럼 보인다.
    • 하지만 참조 에러 대신 undefined 가 출력된다.
    • 변수 선언이 런타임이 아닌, 그 이전 단계인 소스코드 평가과정에서 먼저 실행되기 때문이다.
      • 소스코드 실행을 위한 평가과정에서 자바스크립트 엔진은 변수 선언을 포함한 모든 선언문(변수, 함수)를 찾아 먼저 실행한다.
  • 변수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 자바스크립트 특징을 변수 호이스팅이라고한다.

값의 할당

var score = 1;
  • 변수 선언과 값의 할당의 실행 시점이 다르다.
    • 변수 선언은 런타임 이전인 평가과정에서 실행되지만, 값의 할당은 런타임에 실행된다.

'Coding > JavaScript' 카테고리의 다른 글

[JavaScript] 자바스크립트란 ?  (0) 2022.08.25
    'Coding/JavaScript' 카테고리의 다른 글
    • [JavaScript] 자바스크립트란 ?
    ted0505
    ted0505

    티스토리툴바