티스토리 뷰

반응형

변수 Hoising 예제

1
2
3
alert(name); // 결과 : undefined
var name = "홍길동";
alert(name); // 결과 : 홍길동
cs

name이라는 변수가 선언되기 전에 호출했으니 에러가 발생할 것 같지만

값이 할당되지 않았다는 의미인 undefined가 출력된다.

이는 JavaScript의 Hoisting이라는 특성에 의해 아래와 같이 해석되기 때문이다.

1
2
3
4
var name;
alert(name); // 결과 : undefined
name = "홍길동";
alert(name); // 결과 : 홍길동
cs

 

함수 Hoisting 예제

1
2
3
4
5
6
7
test();
 
function test() {
    alert(id); // 결과 : undefined
    var id = 'test';
    alert(id); // 결과 : test
}
cs

함수 역시 함수가 선언되기 전에 사용이 가능하다.

하지만 아래와 같이 함수를 변수에 넣게되면 함수 Hoisting은 발생하지 않게 되고, 에러가 발생하게 되니 주의하도록 하자.

1
2
3
4
5
6
7
test(); // Uncaught TypeError: test is not a function 에러 발생
 
var test = function() {
    alert(id); // 결과 : undefined    
    var id = 'test';    
    alert(id); // 결과 : test    
}
cs

 

전역변수와 지역변수의 차이

1
2
3
4
5
6
7
8
9
alert(name); // 결과 : undefined
var name = "홍길동";
alert(name); // 결과 : 홍길동
 
function test() {
    alert(id); // 결과 : undefined    
    var id = 'test';    
    alert(id); // 결과 : test    
}
cs

아래의 예제와 같이

전역변수의 선언부는 소스의 최상단에 위치한걸로 해석하고,

지역변수는 함수내부의 최상단에 위치한걸로 해석된다.

1
2
3
4
5
6
7
8
9
10
11
var name;
alert(name); // 결과 : undefined
name = "홍길동";
alert(name); // 결과 : 홍길동
 
function test() {
    var id;
    alert(id); // 결과 : undefined   
    id = 'test';    
    alert(id); // 결과 : test    
}
cs

 

Hosting을 한마디로 정의하면?

변수나 함수의 선언문을 유효범위의 최상단으로 끌어올려서 변수나 함수를 선언하기 이전에도 사용할 수 있도록 해주는 JavaScript의 특성

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함