#7 자바스크립트 함수

2langk·2021년 3월 22일
0
post-thumbnail
post-custom-banner

함수

자바스크립트에서 함수는 객체이다.
함수도 사실 생성자 함수를 가지고 만들어진다.

함수의 생성자 함수
new Function (arg1, arg2, ... argN, functionBody)

생성자 함수로 만든 multiply 객체(함수)
const multiply = new Function('num1', 'num2' ,'return num1 * num2')

JS에서 함수는 호출이 가능한 특별한 객체이다.
multiply(2, 5) // 10

/* 
 * 위에서 선언한 함수는 아래랑 같은거다.
 * function multiply(num1, num2) {
 *    return num1 * num2
 * }
 *
 */

따라서, 우리는 함수를 변수에 할당할 수도 있고,인자로 전달할 수도 있으며
함수에서 함수를 반환(return)할 수도 있다.

// 1. 변수에 할당
const a = function(b) { // 2. 함수를 인자로 전달
    return b // 3. 함수에서 함수를 반환.
}

const b = function() {
    console.log('hi')
}

a(b)(); // 'hi'

Higher Order Function(고계 함수)
: 인자로 함수를 받거나 다른 함수를 반환하는 함수를 고계 함수라고 한다.

const multiplyBy = function(x) {
        return function(y) {
             return x * y
	}
}

// const multiplyBy = x => y => x*y

const multiplyTwo = multiplyBy(2)
const multiplyTen = multiplyBy(10)

multiplyTwo(5) // 10
multiplyTen(5) // 50

여기까지 자바스크립트에서 함수는 객체라는 것을 알아보았고,
이를 응용해서 고계함수를 만들어 보았다.

다음 시간에는 클로저에 대해 소개해보겠다.

post-custom-banner

0개의 댓글