호이스팅

수연·2023년 4월 5일
0
post-thumbnail

호이스팅(Hosting)

  • 함수 내의 변수 및 함수 선언을 각 유효 범위의 최상단에 선언하는 것
  • 실제로 코드가 끌어 올려지는 것이 아님
  • Javascript parser가 내부적으로 끌어올려 처리

호이스팅의 대상

  • var 변수 선언, 함수선언문에서만 발생

변수 선언 예시

  • var 변수 선언
console.log(a); // -> undefined

var a = 'abc'
  • let 또는 const 변수 선언
console.log(a); // -> ReferenceError 

let a = 'abc'

var 변수는 재선언, 값 변경 가능 (ES5)
let 변수는 재선언 불가, 값 변경 가능 (ES6)
const 변수는 재선언 불가, 값 변경 불가능 (ES6)

함수 예시

  • 함수선언문
foo(); // -> abc

function foo() {
  console.log('abc')
}
  • 함수표현식
foo(); // -> TypeError

var foo = function() {
  console.log('abc')
}

호이스팅 우선순위

  • 변수 선언이 함수 선언보다 우선순위가 높음

호이스팅 주의사항

  • 어디에 선언을 했어도, 필요한 곳에 자유롭게 사용하기 위해 만들어진 기능
    - 의도치 않은 버그 생성
    • let, const, 함수표현식 사용 권장

var와 호이스팅 이해 필요 이유

  • ES6를 어디에서든 쓰기 위하긴 아직 이름
  • ES5로 트랜스컴파일 필요

0개의 댓글