Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- multi instance
- 레드마인
- #git #config
- yum목록
- 패키지
- chrome
- intelij mybatis
- 인텔리제이
- yum설치목록
- 호이스팅
- 배열컬럼
- Redmine theme
- ReactNative
- PosgreSQL
- 메소드한줄
- rpm설치목록
- sqlmap 경고
- CentOS
- 배열크기
- rpm목록
- redmine
- 레드마인 테마
- 멀티 인스턴스
- sqlmap warring
- Methods
- 레드마인테마
- intelij sqlmap
- tomcat install
- 리액트네이티브
- react
Archives
- Today
- Total
ZeroRadish
[JS] 호이스팅, Hoisting 본문
JavaScript는 인터프리터 언어이다.
Script 엔진의 인터프리터가, 실행해야 하는 라인에 진입했을때 , 해석하는 과정에서 진입한 스코프안쪽에 선언되어 있는 함수 및 변수를 스코프의 맨 위로 끌어 올리게 된다. 이것을 호이스팅이라고 한다.
흐름을 보면 호이스팅이라고 표현되는 상황은, 인터프린터가 코드를 해석하는 과정에서 발생한다.
어디에도 선언되지 않은 count에 접근하려 하기 때문에 당연히 ReferenceError 가 발생할 것이다.
1 2 3 | ( function (){ console.log('count:',count); // ReferenceError: count is not defined })(); | cs |
- global scope에서 할당된 값인 100을 출력할 것이다.
1 2 3 4 | var count = 100; ( function (){ console.log('count:',count); // count:100 })(); | cs |
- global scope에서 할당된 값인 100을 출력하던 count가 undefined를 출력한다.
1 2 3 4 5 | var count = 100; ( function (){ console.log('count:',count); // count:undefined var count = 0; })(); | cs |
위의 코드는 인터프리터에서 아래와 같은 느낌으로 해석. 자신의 스코프에 있는 count를 참조하게 되는 모습.
1 2 3 4 5 6 | var count = 100; ( function (){ var count; console.log('count:',count); // count:undefined count = 0; })(); | cs |
- 호이스팅의 개념을 이해하지 않고 본다면 아래와 같은 형식의 코드에서 3번 라인에서 약간은 혼란스러울수도 있다.
1 2 3 4 5 6 7 | var count = 100; ( function (){ console.log('local count:',count); // local count:undefined var count = 0; console.log('local count:',count); // local count:0 })(); console.log('global count:',count); // global count:0 | cs |
Comments