본문 바로가기

javascript

[javascript] hoisting

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