코딩애플의 자바스크립트 강의를 보며 정리한 내용
호이스팅 현상이란, 자바스크립트는 변수나 함수의 선언부분을 변수의 범위 맨 위로 강제로 끌고가서 해석해주는데, 이것을 호이스팅이라고 한다.
잠깐! 변수,함수의 선언이란?
변수의 선언 : var 이름; let 나이; const 성별;
변수의 할당 : var 이름 = 'kim';
함수의 선언 : function 함수 (){ ... }
예를 들어,
function 함수(){
console.log('hello');
var 이름 = 'Kim';
}
이렇게 함수 내에서 변수를 만들면, 자바스크립트는 다음과 같이 해석한다.
function 함수(){
var 이름;
console.log('hello');
이름 = 'Kim';
}
변수의 선언 부분을 강제로 변수의 범위 맨 위로 끌고가서 해석한다.
클로저란, 바깥에 있는 변수는 안쪽에서 자유롭게 사용가능한 것을 말한다.
안쪽 바깥쪽이란,
var 나이 = 20;
function 함수(){
console.log(나이)
}
함수();
함수(){} 안쪽에서 바깥쪽에 있는 나이라는 변수를 가져다 쓸 수 있다.
만약, 함수내에 똑같은 나이라는 변수가 있다면 그걸 먼저사용하겠지만, 없으면 자연스럽게 바깥에있는 변수를 가져다 쓴다(참조한다.)