메모리(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
'프로그래밍 > JS' 카테고리의 다른 글
[JavaScript] 원시 값과 객체, 유사 배열 객체 (0) | 2022.07.05 |
---|---|
[JavaScript] 자바스크립트 객체와 프로퍼티 (0) | 2022.07.05 |
[JavaScript] var, let, const 자바스크립트 변수, 템플릿 문자열 (0) | 2022.07.05 |
[JavaScript] TypeScript, Node.js, NPM (0) | 2022.07.04 |
[Javascript] 자바스크립트란? JavaScript, ECMAScript, jQuery (0) | 2022.07.04 |