2023.03.14 호이스팅

이무헌·2023년 3월 14일
0

html,css,js

목록 보기
9/21
post-thumbnail

1.hoisting

전설의 자바스크립트 사이트 mdn에 따르면
hoisting의 정의는 다음과 같다.

JavaScript에서 호이스팅(hoisting)이란, 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. var로 선언한 변수의 경우 호이스팅 시 undefined로 변수를 초기화합니다. 반면 let과 const로 선언한 변수의 경우 호이스팅 시 변수를 초기화하지 않습니다.

var와 let의 차이를 또 한 번 알 수 있다. 중요한 것은 호이스팅으로 let,const는 선언은 되지만 초기화가 되지 않아 reference error! 참조에러가 뜨게된다. 그러므로 항상 let,const변수는 함수 최상단에 선언하도록 하자!
중요한 것은 초기화를 제외한 선언만 호이스팅한다는 것이다.

2.변수에 함수를 넣을때..

arrow function에서 다룰 예정이지만 ...

function vending(money, unit) {
  // 거스름돈 자판기임..
  console.log(`${unit}짜리 ${money / unit}개`);
}

이 함수를 변수에 저장해보자

let e = vending;

짠! 이렇게 해야한다. 그 다음

e()

이렇게 실행시켜야 한다... 이 당연한걸 가끔 이렇게 실수한다.

let f = vending()

이렇게 써버린다.. 이렇게 해버리면 vending이라는 함수가 실행이 된다!
말 그대로 실행이 되기 때문에 그 안에 로직들을 전부 실행시키고 f라는 변수에 return 값이 담기게 된다. ㅎㅎ 노리지 않았다면 위에껄 쓰도록 하자..

profile
개발당시에 직면한 이슈를 정리하는 곳

0개의 댓글