고차함수

일급객체

프도의길 2021. 10. 30. 13:27

자바스크립트에도 특별한 대우를 받는 일급 객체(first-class citizen)가 있습니다. 대표적인 일급 객체 중 하나가 함수입니다. (자바스크립트가 나온 시점을 고려했을 때,) 자바스크립트에서 함수는 아래와 같이 특별하게 취급됩니다.


 

1. 변수에 할당 가능

2. 다른 함수의 인자로 전달 가능

3. 다른 함수의 결과로서 리턴될 수 있다.

 

아래는 변수 square에 함수를 할당하는 함수 표현식입니다.

자바스크립트에서 함수는 일급 객체이기 때문에 변수에 저장할 수 있습니다.

 

함수 표현식은 할당 전에 사용할 수 없습니다.

square(7); // --> ReferenceError: Can't find variable: square */

const square = function (num) {

return num * num;

};

// square에는 함수가 저장되어 있으므로 (일급 객체), 함수 호출 연산자 '()'를 사용할 수 있습니다.

output = square(7);

console.log(output); // --> 49

 

위의 함수 표현식(function expression)은 함수 선언식(function declaration)과 다르게 호이스팅이 적용되지 않습니다.

  • 호이스팅은 선언된 위치에 관계없이 어디서든 함수를 사용할 수 있도록 합니다.
  • 코드가 실행되는 과정에서 함수 선언부를 코드의 최상단으로 끌어올리는 것처럼 보이게 합니다

 

호이스팅은 따로 블로그 하겠습니다

'고차함수' 카테고리의 다른 글

고차함수, 내장 고차함수  (0) 2021.10.30