javascript
[javascript] hoisting
squll1
2013. 11. 18. 19:45
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();