본문 바로가기

FrontEnd/JavaScript

자바스크립트 함수의 특징

자바스크립트 함수에는 여러가지 특징들이 있다.

 

 

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' 카테고리의 다른 글