728x90
인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. 그렇기 때문에 선언 코드가 최상단으로 옮겨진다는 설명을 많이 들을 수 있습니다. 코드를 실행하기 전에 함수 선언에 대한 메모리부터 할당하기 때문에 함수를 호출하는 코드를 함수 선언보다 먼저 배치하여도 동작할 수 있습니다.
studyHoisting("호이스팅");
function studyHoisting(text){
console.log(text + "(hoisting)");
}
하지만, 선언만 호이스팅합니다. 변수를 먼저 사용하고 이후에 선언 및 초기화를 작성하면 먼저 사용한 시점의 변수는 기본 초기화 상태를 사용합니다. 선언 없이 초기화만 할 경우에는 예외가 발생합니다.
console.log(num); // 호이스팅한 var 선언으로 인해 undefined 출력
var num; // 선언
num = 6; // 초기화
호이스팅은 다른 자료형과 변수에도 잘 작동하는데, let과 const 로 선언한 경우 호이스팅 시 var와 다르게 기본으로 undefined로 초기화하지 않기 때문에 초기화 없이 실행하는 코드를 작성하면 예외가 발생합니다.
참고사이트
MDN (호이스팅) : https://developer.mozilla.org/ko/docs/Glossary/Hoisting
728x90
'개발 > JavaScript' 카테고리의 다른 글
Navigator Clipboard API 사용할 때 DOMException 조심하기 (0) | 2023.05.01 |
---|---|
검색 키워드 하이라이트로 표현하기 (0) | 2023.03.05 |
Chart.js 라이브러리를 이용하여 공유하기 기능 현황 차트로 표현하기 (0) | 2023.03.03 |
Chart.js 라이브러리를 이용하여 Radar Chart 그리기 (0) | 2023.01.24 |
이미지 파일 업로드 시 이미지 미리 보기 구현하기 (0) | 2022.12.29 |