일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- Try...catch
- 리엑트 이벤트
- html5
- UI 레이어
- 브라우저 탐지
- 자바스크립트
- 비구조화 할당
- 트라이캐치
- 자바스크립트 코드 스타일
- 에이전트 탐지
- 함수 호이스팅
- 에러 던지기
- 객체지향프로그래밍 언어
- 자바스크립트 생성자
- React 리액트
- 자바스크립트 객체
- 자스
- 변수 선언
- JS cod e style
- js
- 스타일가이드라인
- JS 이벤트
- 사용자 에러
- 자바스크립트의 기본 포멧
- 프로그래밍 프랙티스
- javascript
- Programming Practice
- 자바스크립트 문자열
- Null비교 금지
- 자바스크립트 클래스
Archives
- Today
- Total
GomJu's Coding Blog
[JS] 17. 자바스크립트 기초 문법 - 호이스팅 본문
Q : 자바스크립트에서 호이스팅이란 무엇인가요?
A : Hoisting(호이스팅)은 변수의 정의가 그 범위에 따라 선언과 할당으로 분리되는 것을 의미합니다.
자바스크립트에선 모든 변수 할당을 할 때 호이스팅이 발생합니다. 즉 변수가 함수내에 정의되었을때 선언이 함수의 최상위로, 함수 밖에서 정의되었을 때 루트에 선언이 됩니다.
변수 호이스팅
변수를 선언할 때 사용하는 var
는 사용하는 즉시 호이스팅에 의해서 루트함수에서 선언식이 실행 됩니다. 다음은 var
의 역할에 대한 코드입니다.
function EXvar() {
console.log(x); // undefined
var x = 2;
console.log(x); // 2
};
위의 코드를 다시 해석해 보면 다음과 같습니다.
function EXvar() {
var x;
console.log(x); // undefined
x = 2;
console.log(x); // 2
};
위와 같이 호이스팅이 진행되기 때문에 var선언식을 선호하지 않는 이유도 있습니다.
함수 호이스팅
함수를 1000번째 라인에서 선언을 해도 1번째 라인에서 호출 할 수 있습니다. 이러한 것 처럼 함수또한 최고 루트에 호이스팅 됩니다. 다음음 함수 호이스팅에 대한 코드입니다.
foo();
function foo() {
console.log('Hello');
};
출력 > Hello
하지만 변수를 이용해 만든 함수는 호이스팅 되지 않습니다.
foo();
foo = function() {
console.log('Hello');
};
출력 > System error!
마무리
다음 포스팅 에서는 《기초문법-비교연산자》에 대해 포스팅 하도록 하겠습니다.
'WEB > JavaScript' 카테고리의 다른 글
[JS] 19. 자바스크립트 기초 문법 - 예외처리 (0) | 2018.11.29 |
---|---|
[JS] 18. 자바스크립트 기초 문법 - 비교연산자 (0) | 2018.11.28 |
[JS] 16. 자바스크립트 기초 문법 - 모듈 (0) | 2018.11.26 |
[JS] 15. 자바스크립트 기초 문법 - 비구조화 (0) | 2018.11.25 |
[JS] 14. 자바스크립트 기초 문법 - 함수 (0) | 2018.11.24 |
Comments