Front-end/Javascript

변수의 선언과 호이스팅

madison 2021. 4. 8. 12:41

호이스팅

자바스크립트 엔진은 모든 선언문을 먼저 실행 후 선언문을 제외 한 소스를 실행한다. 변수와 함수 선언문이 코드의 맨 꼭대기로 끌어올려진것처럼 동작하는 특징이다. 

case 1) 

실행한 결과는 ? undefined가 아닌 6이 나온다. 

실제 처리 과정

 

case 2) 

실행 결과는 undefined이다. 

실제 처리 과정 

 

변수와 함수 선언문은 선언된 위치에서 코드의 꼭대기로 끌어올려진다. 

 

함수와 변수 선언문은 모두 끌어올려지지만, 함수가 먼저 끌어올려지고 다음으로 변수가 올려진다. 

 

 

변수의 선언

번수의 선언은 런타임 이전에 이루어지지만 값의 할당은 런타임 시점에 이루어진다.

상수 : 변수에 할당된 값을 변경할 수 없으면 변수가 아닌 상수이다.

 

변수의 재할당

변수에 값이 재할당되면 기존에 할당된 값은 가비지 콜렉터에 의해 메모리에서 해제된다. 

(자바스크립트는 가비지 콜렉터를 내장하고 있는 매니지드 언어이며 이를 통해 메모리 누수를 방지한다) 

 

식별자 네이밍 규칙

1.식별자는 특수문자를 제외한 문자,숫자, _ , $를 포함할 수 있다. 

2. 숫자로 시작하는것을 허용하지 않는다.

3. 예약어는 식별자로 사용할 수 없다. 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Lexical_grammar

보통 변수나함수는 카멜케이스를 사용하며 생성자함수, 클래스에는 파스칼케이스를 사용한다. 

 

참고: 모던 자바스크립트 Deep Dive, mozilla