자바스크립트에도 특별한 대우를 받는 일급 객체(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 |
---|