hoisting을 해석하면 '끌어올리기'이다.
자바스크립트는 함수내에서 여기저기에 여러개의 var선언을 사용하지만
실제로 모두 함수상단에 선언된 것과 동일하게 동작합니다. 이를 호이스팅이라 합니다.
아래 코드를 보면서 console.log에 뭐가 나올지 생각하보면
name='global';//전역변수
function func(){
console.log(name);//undefined
var name='local';
console.log(name);//local
}
func();
첫번째 console.log는 global이 두번쨰console.log는 local이 찍힌다고 생각할 수 있습니다.
지역변수 name이 선언되기 전에 출력을 했으니 전역변수를 출력하고 다음 출력은 지역변수가 선언된 다음이니 지역변수값이 출력된다고
생각할 수 있는데 결과는 위와같이 undefined와 local이 출력됩니다.
이는 위에서 설명한 hoisting때문입니다.
위 코드는 아래와 같이 작성한 코드와 같습니다.
name='global';//전역변수
function func(){
var name;
console.log(name);//undefined
name='local';
console.log(name);//local
}
func();
'javascript' 카테고리의 다른 글
[javascript] 중괄호 위치 (0) | 2013.11.19 |
---|---|
[javascript] 전역변수 (1) | 2013.11.18 |
[javascript] ==과 === (0) | 2013.11.07 |
[javascript] javascript patterns (0) | 2013.10.28 |
[javascript] 배열을 스택처럼 다루기 (0) | 2013.06.26 |