[JavaScript] 호이스팅
호이스팅
- hoisting : 끌어올리기
- 실제 호출하기 이전으로 끌어 올라간 것처럼 동작
변수 호이스팅
console.log(a); //undefined
// console.log(b); //ReferenceError
// console.log(c); //ReferenceError
var a = 'var는 호이스팅이 발생한다';
let b = 'let은 호이스팅이 발생하지 않는다.';
const c = 'const도 호이스팅이 발생하지 않는다.';
var
: 변수의 선언만 끌어올려짐. 할당값은 끌어올려지지 않음.const
vslet
: const는 선언시 반드시 값을 할당해야하고 이후에 재할당을 할 수 없음.
함수 호이스팅
Func(); // 함수 호이스팅
console.log(Func2); //undefined
Func2(); // TypeError
// 선언식 함수
function Func(){
console.log('함수 호이스팅');
}
// 익명함수(표현식 함수)
var Func2 = function(){
console.log('함수 호이스팅2');
}
- 선언식 함수만 끌여올려짐.
- 익명함수(표현식 함수)는 끌어올려지지 않음. Func2의 경우 변수 선언만 끌어올려짐.
정리
- 호이스팅은 var로 선언한 변수와, 선언식 함수가 최상단으로 끌어올려지는 현상을 말한다. 변수는 상단으로 끌어올릴뿐, 할당된 값은 끌어올려지지 않는다.
- 이러한 문제점은
let
,const
로 변수,상수를 선언하고, 함수 표현식(익명함수)를 사용하여 해결한다!
Author And Source
이 문제에 관하여([JavaScript] 호이스팅), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dreamfulbud/JavaScript-호이스팅저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)