호이스팅의 개념에 대해 배웠는데 잘 이해가 가지않아서 정리를 해보려고 한다.
💡Hoisting?
💡Hoisting은 언제 발생하는가?
- 'function' 키워드로 함수를 선언할 때
- 'var' 키워드로 변수를 선언할 때
✅ Hoisting 규칙
// 함수 선언문. 함수명 a가 곧 변수명
// function 정의부만 존재, 할당 명령이 없는 경우
function a () { /* ... */ }
a(); // 실행 ok
// 함수 표현식. 정의한 function을 별도 변수에 할당하는 경우
// (1) 익명함수표현식 : 변수명 b가 곧 변수명(일반적 case에요)
var b = function () { /* ... */ }
b(); // 실행 ok
- 변수를 선언하는 키워드 3가지 ➡️ var(변수), let(변수), const(상수)
const로 선언한 변수(상수)는 호이스팅 되지 않는다.
let로 선언한 변수는 호이스팅 되지 않는다.
var로 선언한 변수는 선언은 되지만 할당은 되지 않는다.(undefined)- 선언 / 할당 / 초기화
// 함수 선언문은 전체를 hoisting function sum (a, b) { // 함수 선언문 sum return a + b; } // 변수는 선언부만 hoisting var multiply; console.log(sum(1, 2)); console.log(multiply(3, 4)); multiply = function (a, b) { // 변수의 할당부는 원래 자리 return a + b; };
📌 협업을 많이 하고 복잡한 코드일수록
전역 공간에서 이루어지는 코드 협업일수록 함수표현식 을 활용하는 습관을 들이자!