함수표현식

황성호·2021년 2월 27일
0
let sayHi = function() {
  alert( "Hello" );
};

함수를 생성하고 변수에 값을 할당하는 것처럼 함수가 변수에 할당되었습니다. 함수가 어떤 방식으로 만들어졌는지에 관계없이 함수는 값이고, 따라서 변수에 할당할 수 있습니다. 위 예시에선 함수가 변수 sayHi에 저장된 값이 되었습니다.

위 예시를 간단한 말로 풀면 다음과 같습니다: “함수를 만들고 그 함수를 변수 sayHi에 할당하기”

함수표현식 끝에는 세미콜론!

callback 함수
함수를 함수의 인수로 전달하고, 필요하다면 인수로 전달한 그 함수를 "나중에 호출(called back)"하는 것

함수 표현식 vs 함수 선언문

첫 번째는 문법입니다. 코드를 통해 어떤 차이가 있는지 살펴봅시다.

함수 선언문: 함수는 주요 코드 흐름 중간에 독자적인 구문 형태로 존재합니다.

// 함수 선언문
function sum(a, b) {
  return a + b;
}

함수 표현식: 함수는 표현식이나 구문 구성(syntax construct) 내부에 생성됩니다. 아래 예시에선 함수가 할당 연산자 =를 이용해 만든 “할당 표현식” 우측에 생성되었습니다.

// 함수 표현식
let sum = function(a, b) {
  return a + b;
};

두 번째 차이는 자바스크립트 엔진이 언제 함수를 생성하는지에 있습니다.

함수 표현식은 실제 실행 흐름이 해당 함수에 도달했을 때 함수를 생성합니다. 따라서 실행 흐름이 함수에 도달했을 때부터 해당 함수를 사용할 수 있습니다.
함수 선언문은 함수 선언문이 정의되기 전에도 호출할 수 있습니다.
함수 표현식으로 정의한 함수는 함수가 선언되기 전에 접근하는 게 불가능합니다.

https://ko.javascript.info/function-expressions

profile
개발!

0개의 댓글