본문 바로가기
모던 자바스크립트

Ch.12 함수

by 김민규(cobocho) 2022. 10. 8.

함수 호이스팅

console.log(add(2,5)) // 7
console.log(sub(2,5)) // 타입에러

function add(x, y) { //함수 선언문
	return x + y;
}

var sub = function(x, y) { //함수 표현식
	return x + y;
}

함수 선언문으로 정의한 함수는 선언문 이전에 호출 할 수 있지만 함수 표현식으로 정의한 함수는 호출이 불가하다.

이는 함수 선언문과 함수 표현식의 생성시점이 다르기 때문이다.

왜나하면 함수 선언문은 함수를 호이스팅하여 암묵적으로 생성된 식별자를 undefined가 아닌 함수로 초기화 하는 함수 호이스팅을 실행하며.

함수 표현식은 변수를 호이스팅 후 undefined로 초기화 하는 변수 호이스팅을 실행하기 때문이다.

 

함수 호이스팅은 함수를 호출 전에 반드시 선언해야 한다는 규칙을 무시하므로 함수 표현식을 권장한다.

'모던 자바스크립트' 카테고리의 다른 글

Ch.14 전역 변수의 문제점  (0) 2022.10.10
Ch.13 스코프  (0) 2022.10.10
Ch.10 객체 리터럴  (0) 2022.10.07
Ch.7 연산자  (0) 2022.10.07
Ch.5 표현식과 문  (0) 2022.10.06