Hoisting
- Javascript는 함수 scope 를 갖는다.
- 모든 선언문은 (ex : var x) 함수 실행 맨 첫번째로 실행된다.
- 할당(assignment)는 구문 실행시 해석된다.
Example 1.
var x = 5;
var y = 7;
console.log(x + ” ” + y);
var y = 7;
console.log(x + ” ” + y);
> 결과 : 5 + 7
Exmple 2.
var x = 5;
console.log(x + ” ” + y);
var y = 7;
> 결과 : 5 + undefined
위의 코드를 Javascript 엔진이 해석할 때는 아래와 같다.
var x = 5;
var y;
console.log(x + ” ” + y);
y = 7;
이러한 Hoisting 으로 때문에 개발자는 예상치 못한 오류를 만날 수 있기 때문에
한 함수 안에서 모든 선언문은 명시적으로 함수 맨 처음에 선언해주는 것이 좋다.