메모리(Memory)

- 데이터를 저장할 수 있는 메모리 셀(Memory Cell)의 집합체

 

 

변수(Variable)

- 애플리케이션서 값에 상징적인 이름으로 변수를 사용한다.

- 변수명 = 식별자

 

 

식별자(Identifier)

- 코드 내의 변수, 함수 혹은 속성을 식별하는 문자열

- 식별자가 실제로 갖고 있는 값은 메모리 값이다.

- Naming rule : $, - 사용 가능, 숫자 시작 불가능, 특수 문자 불가능

- CPU(Central Processing Unit) 중앙 처리 장치 : 연산에 사용

- memory 주소를 알아야 variable을 이용해서 해당 메모리 사용 가능

- 메모리에 대한 직접 접근을 막고있기 때문에 변수 선언을 해주어야 한다.

 

 

변수 생성 방법 

- ES6 이전

- function level scope 함수 기준 스코프

(1) var 

 

- ES6 이후

- block level scope 블록 기준 스코프

(1) let

(2) const

 

 

ex. var score;

scope = 80;

scope = 100;

 

실행 컨텍스트(Execution Context)

- 실행 가능한 코드를 형상화하고 구분하는 추상적인 개념

- 코드를 실행하기 위해서는 해당 코드에 대한 정보를 가지고 있어야 한다.

 

ex. score가 0x2763을 가르킨다는 것은 어떻게 알 수 있는지??

-> 실행 컨텍스트가 정보를 가지고 있다.

 

- 전역 컨텍스트(Global Context)

- 함수 컨텍스트(Functional Context)

 

 

undefined

- primitive value(원시 값)중 하나

- JS Engine에 의해 사용된다.

- 개발자가 직접 사용하는 것은 지양한다.

- 변수를 초기화할 때 사용한다.

 

 

변수 호이스팅(Variable hoisting)

- 함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위(Scope)의 최상단에 선언하는 것

- 자바 스크립트의 특징

- var 변수 선언과 함수 선언문에만 호이스팅이 일어난다. (function scope)

- 자바 스크립트는 식별자를 먼저 확인한다.

- 변수 선언을 runtime 이전에 수행하고, 함수 위로 끌어올려준다.

- 자바 스크립트에 나오는 모든 식별자들은 호이스팅된다.

function getX() {
  console.log(x); // undefined
  var x = 100; // var x 호이스트
  console.log(x); // 100
}
getX();


foo( );
var foo = function( ) {
  console.log(‘hello’);
};
// type error
  • 1. 함수 선언문은 항상 자바스크립트 엔진 구동시 가장 최우선으로 해석되어 호이스팅된다.
    • 함수 선언을 호이스팅해서 global 객체에 등록시키기 때문에 출력
  • 2. 함수 표현식은 런타임 과정에서 이루어지기 때문에 호이스팅 X
    • 함수 리터럴을 할당하기 때문에 런타임 환경에서 type error

+ Recent posts