TIL 호이스팅 23.5.25

행복한 딸기🍓·2023년 5월 25일
0

TIL

목록 보기
2/7

VariableEnviroment(VE) 와 LexicalEnviroment(LE)는 담기는 항목이 완전히 동일하다. 차이점은! 스냅샷 유지여부이다
VE : 스냅샷 유지
LE : 스냅샷 유지하지 않음 -> 실시간으로 변경사항을 계속 반영


호이스팅(hoisting) : 코드가 실행하기 전 변수선언/함수선언이 해당 스코프의 최상단으로 끌어 올려진 것 같은 현상!!

var 키워드로 선언한 변수와 함수 선언문은 오류 없이 동작한다.
이는 선언이 파일의 맨 위로 끌어올려진 것 처럼 보이게 한다.
-> 선언된 var는 상단에서 참조, 할당이 가능

함수 선언식과 함수 표현식의 차이

함수 선언식 : 함수 전체를 호이스팅한다. 정의된 범위의 맨 위로 호이스팅되어 함수 선언 전에 ㅎ마수를 사용할 수 있다.

함수 표현식 : 별도의 변수에 할당하게 되는데, 변수는 선언부와 할당부를 나누어 호이스팅하게 된다. 선언부만 호이스팅하게 된다.

함수 선언문은 호이스팅의 영향을 받는다.
함수 표현문은 호이스팅의 영향을 받지 않지 않는다.


ex) 함수 선언문

a();   //1출력

function a() {
	console.log('1');
}
a(); //1출력

먼저 선언 전에 불러도 1이 잘 출력된다.


ex) 함수 표현식

aFunc();  // 에러 : aFunction is not a function

var aFunc = function () {
  console.log('2');
}
aFunc();  //2출력

aFunc을 선언하기 전에 부르면 에러가 난다.

profile
🍀먹고 자라는 새싹🌱

0개의 댓글