함수 선언문 vs 함수 표현식 🖐

c_yj·2022년 7월 24일
0
post-thumbnail

함수 선언문 🔴

일반적인 프로그래밍 언어에서의 함수 선언과 비슷한 형식이다.
함수 선언문은 함수 이름을 생략할 수 없다.

function add(x, y) {
  return x + y 
}

함수 표현식 🟠

함수를 다른 변수에 값으로써 '할당'한 것이 곧 함수 표현식이다.

var sub = function (x,y) {
  return x - y;
}

이 둘의 차이점은 무엇일까 ❓

해답은 호출할 수 있는 타이밍이다.

  • 함수 선언문 : 정의한 함수는 함수 선언문 이전에 호출할 수 있다.
  • 함수 표현식 :정의한 함수는 함수 표현식 이전에 호출할 수 없다.

함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 것은 자바스크립트 고유의 특징 함수 호이스팅⭐ 떄문이다.

호이스팅이란 "끌어올린다" 라는 뜻으로 변수 및 함수 선언문이 스코프 내의 최상단으로 끌어올려지는 현상 을 말한다.

예제를 통해 알아보자. 호이스팅 떄문에 결과는 다음과 같이 나온다.

console.log(add(2,5)); // 7
console.log(sub(2,5)); // undefined

function add(x,y) {
  return x + y
}

var sub = function (x,y) {
  return x - y;
}

출처
https://github.com/baeharam/Must-Know-About-Frontend/blob/main/Notes/javascript/hoisting.md
모던 자바스크립트 Deep Dive 책

profile
FrontEnd Developer

0개의 댓글