
일급 객체 (First-class Object)
자바스크립트에서는 객체의 성질을 함수가 갖고 있음.
자바스크립트의 함수 = 일급 객체 (First-class Object)
함수가 일급 객체라는 것은 해당 언어의 함수가 다른 일반적인 데이터 타입과 동등한 취급을 받는다는 것을 의미함.
일급 객체의 특징
- 함수를 변수에 저장할 수 있다. (함수 표현식, function expression)
- 함수의 매개변수로 함수를 받을 수 있다. (콜백함수, callback function)
- 함수의 반환값으로 함수를 리턴할 수 있다. (고차함수, higher-order function
1. 변수에 저장할 수 있다.
함수를 값처럼 취급할 수 있으며, 변수에 저장된 함수를 호출할 수 있다.
함수 표현식(Function Expression) : 함수를 변수에 할당하여 사용하는 방식
greet 변수에 익명함수(Anonymous Function)을 할당함.
이 익명함수는 name이라는 파라미터를 받아서 콘솔에 해당 name을 출력하는 역할을 함.
2. 매개변수로 함수를 받을 수 있다.
함수는 다른 함수의 매개변수로 전달될 수 있으며, 이렇게 전달된 함수는 다른 함수 내에서 실행될 수 있다.
콜백함수(callback function) : 다른 함수(caller)의 인자(argument)로 들어오는 함수
3. 반환값으로 함수를 리턴할 수 있다.
함수는 다른 함수 내에서 생성되어 반환될 수 있으며, 이렇게 반환된 함수는 다른 곳에서 사용될 수 있음.
고차 함수(Higher order function) : 함수를 인자로 전달받거나 함수를 결과로 반환하는 함수
- `makeMultiplier` 함수는 인자로 받은 `factor`를 사용하여 새로운 함수를 생성하고 반환함. - 반환된 함수는 `factor`와 곱해진 값을 반환함. - 이때 반환된 함수는 **Closure**를 형성하여 `factor`의 값을 기억하고 있음. - 이후에 반환된 함수가 호출될 때마다 해당 `factor` 값을 사용하여 입력된 `number`를 곱한 값을 반환함.
