자바스크립트 함수에는 여러가지 특징들이 있다.
1.일급 객체
일급 객체(First-Class Object)는 프로그래밍 언어에서 특정 타입의 데이터가 아래 조건을 만족할 때 사용하는 용어이다.
- 변수에 할당할 수 있다.
- 함수의 인자로 전달할 수 있다.
- 함수의 반환값으로 사용할 수 있다.
자바스크립트에서 함수는 값처럼 취급될 수 있으며, 변수에 할당하거나, 다른 함수의 인자로 전달하거나, 함수의 반환값으로도 사용할 수 있다.
const sayHello = function() { return 'Hello'; };
console.log(sayHello()); // 'Hello'
const executeFunction = function(fn) {
return fn();
};
console.log(executeFunction(sayHello)); // 'Hello'
이를 통해 매우 유연하게 코드를 작성할 수 있으며, 고차함수를 포함한 다양한 패턴을 구현할 수 있다.
2. 클로저
일급 객체로 인해 클로저라는 강력한 개념이 생겨난다.
클로저는 자신이 선언된 환경(스코프)을 기억하고, 해당 환경에 접근할 수 있는 기능이다. 이를 통해 함수는 자신이 선언된 당시 스코프 내의 변수를 참조할 수 있다.
function outerFunction(outerValue) {
return function innerFunction(innerValue) {
return outerValue + innerValue;
};
}
const add10 = outerFunction(10);
console.log(add10(5)); // 15
3. 고차함수
자바스크립트에서 함수가 일급 객체이기 때문에 고차함수, 즉 다른 함수를 인자로 받거나 반환하는 함수를 정의할 수 있다.
이는 함수형 프로그래밍 패턴을 가능하게 한다.
function multiplyBy(factor) {
return function(num) {
return num * factor;
};
}
const double = multiplyBy(2);
console.log(double(5)); // 10
4. 화살표 함수
화살표 함수는 더 간결한 문법을 제공하고, 특히 this 바인딩에서 기존 함수와 다른 동작을 한다. 화살표 함수는 선언된 위치의 this 값을 유지하므로, 일반 함수와 달리 별도로 this를 바인딩할 필요가 없다.
const obj = {
value: 42,
method: function() {
setTimeout(() => {
console.log(this.value); // 42 (Arrow 함수는 obj의 this를 유지)
}, 1000);
}
};
obj.method();
'FrontEnd > JavaScript' 카테고리의 다른 글
CommonJs와 ESModule의 차이점 (0) | 2025.07.03 |
---|---|
requestAnimationFrame에 대해 알아보기 (0) | 2025.03.18 |