본문 바로가기

Programming/Javascript

Javascript 일급 객체(First-class object)

반응형

javascript에서 함수(Function)는 일급 객체(First-class object)이다.

 

일급 객체(First-class object)란?

javascript에서 다음을 만족하여야 한다.

  • 무명의 literal로 생성이 가능하다.
  • 변수나 자료구조(배열(Array), 객체(Object) 등)에 할당이 가능하다.
  • 다른 함수의 parameter로 전달이 가능하다.
  • 다른 함수의 return으로 사용이 가능하다.

 

Function이 일급 객체인 이유

javascript에서 Function은 다음과 같이 가능하다.

  • 무명의 literal로 생성이 가능하다.
var helloAlert = function(name){
    (name + "님 환영합니다.");
}
helloAlert("world");

 

  • 변수나 자료구조(배열(Array), 객체(Object) 등)에 할당이 가능하다.
funciton banana = {
	alert('This is banana')
}
const arr = ['apple', element];
const obj = {
 'a': 'apple'
 'b': banana,
}

 

  • 다른 함수의 parameter로 전달이 가능하다.
function add(number1, number2) {
	return number1 + number2;
}

funciton doubleAdd(addFunc, number1, number2){
	return 2 * addFunc(number1, number2)
}

doubleAdd(add, 1, 2)	// result: 6

 

  • 다른 함수의 return으로 사용이 가능하다.
function subtract(number1) {
	return function(number2){
    	return number1 - number2;
    }
}

// 다음과 같이 사용하게 되면 subtract(5)에서 subtract함수의 인자를 받고
// (8)에서 return에 있는 함수의 인자를 받아온다.
subtract(5)(8);	// result: 3

// 함수는 literal로 생성이 가능하기 때문에 변수에 저장하여 사용할 수도 있다.
const subtract5 = subtract(5);
subtract5(8); // result: 3

위와 같이 함수를  다중 인수를 갖는 함수를 단일 인수를 갖는 함수들의 함수열로 바꾸는 것을 커링(Currying)이라고 한다. 

커링 - https://nachocat.tistory.com/9

 

 

 

반응형