인터프리터가 자바스크립트 코드를 해석하면서 Global 영역에 선언된 코드블록을 최상의 Scope로 끌어 올리는 것
선언된 변수,함수를 가장먼저 해석하고, 할당구문은 런타임시 이루어지기 때문에 호이스팅안됨
쉽게 말하면 선언문은 항상 최우선으로 해석
함수표현식과 함수선언식의 차이는 호이스팅에 있다
함수선언식(function Expressions) : 호이스팅 됨 , {} 안의 내용은 포함
함수표현식(function Declarations) : 호이스팅 안됨, = 연산자는 포함하지 않음
ex1(); // 함수선언식!
ex2(); // 에러 (함수 못찾음)
// 함수선언식
function ex2() {
console.log("함수선언식!");
}
// 함수표현식
var ex1 = function() {
console.log("함수표현식!");
}
함수 호이스팅은 함수를 사용하기 전에 반드시 함수를 선언해야한다는 규칙을 무시하고
코드를 사람이 해석하는데 많은 혼란을 주게 된다.
이런 이유로 코딩할 때 선언문은 최상위에 작성 하고, 함수표현식을 권고하고 있다.
// bad
function foo() {
// ...
}
// bad
const foo = function () {
// ...
};
// good
// lexical name distinguished from the variable-referenced invocation(s)
const short = function longUniqueMoreDescriptiveLexicalFoo() {
// ...
};
`
'DEV > javascript, jQuery' 카테고리의 다른 글
[javascript] 자동 다음 탭 이동 (focus 이동) (0) | 2020.05.24 |
---|---|
[javascript] input type=number maxlength 적용 (number 타입 maxlength) (0) | 2020.05.24 |
css와 js 위치, javascript 태그 위치 (0) | 2020.05.19 |
[jQuery] 자주 사용하는 jQuery 셀렉터, 함수 (0) | 2020.05.18 |
[jQuery] ajax ( 실제 개발시 사용하는 ajax 문법 ) (0) | 2020.05.18 |