Minwoo Dev.

[JavaScript] 값으로서의 함수 본문

JavaScript

[JavaScript] 값으로서의 함수

itisminu 2024. 1. 17. 10:11
728x90
반응형
SMALL

이 게시물은 인프런 강의 [생활코딩 - 자바스크립트(JavaScript) 기초] 강의를 보고 개인적으로 기록한 게시물입니다.

 

값으로서의 함수

JavaScript 코드들을 보면 아래와 같이 함수가 변수에 대입되는 경우를 본 적이 있을 것이다.

let a = function(){}

 

변수에 담을 수 있는 것은 값일텐데, 함수가 어떻게 들어간걸까 ?

그 이유는, JavaScript에서는 함수가 값으로도 사용되기 때문이다. 즉 함수도 객체라는 말이다.

 

위처럼 변수뿐만 아니라, 객체의 값으로도 사용될 수 있다.

a = {
    k: function () { // k : 속성(property) , funtion(){} : 메소드(method)

    }
};

 

위 코드는 객체의 key 값으로 k를 주었고, 그에 해당하는 value 값으로 function이라는 함수를 두었다.

이렇게 함수가 객체의 값으로 들어간다면 k를 속성(property) function을 메소드(method)라고 명칭한다.

 

 

함수를 반환값으로 사용

function calculator(mode) {
    let funcs = {
        'plus': function (left, right) { return left + right },
        'minus': function (left, right) { return left - right }
    }
    return funcs[mode];
}

console.log(calculator('plus')(14, 8));
console.log(calculator('minus')(15, 9));

 

위와 같은 코드가 있다.

calculator('plus')를 하면 calculator 함수에서 funs['plus']의 값을 반환해야하므로 calculator 함수 내부의 funcs에서 'plus'에 해당하는 메소드를 반환한다. (14,8)이라는 인자를 'plus' 에 해당하는 메소드의 매개변수로 받아와 결론적으로 14+8의 값을 반환하게 된다.

'minus'도 같은 맥락이다.

 

결과

 

이처럼 함수는 값으로 사용될 수 있기에 반환값으로도 사용할 수 있다.

 

 

함수를 배열에서 사용

let process = [
    function (input) { return input + 10; },
    function (input) { return input * input; },
    function (input) { return input / 2; }
];
let input = 1;
for (let i = 0; i < process.length; i++) {
    input = process[i](input);
    console.log(input);
}

 

위 코드에서는 process라는 배열에 함수 3개를 담고 있다.

배열에 담겨있는 값의 개수는 3개이므로 배열의 길이를 구하는 .length를 사용하여 반복문을 사용할 수 있다.

 

 

결과

 

 

위처럼 함수는 객체, 값이기 때문에 배열에서도 사용될 수 있다.

 

 

728x90
반응형
LIST