미누에요
[JavaScript] 값으로서의 함수 본문
이 게시물은 인프런 강의 [생활코딩 - 자바스크립트(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를 사용하여 반복문을 사용할 수 있다.
결과
위처럼 함수는 객체, 값이기 때문에 배열에서도 사용될 수 있다.
'JavaScript' 카테고리의 다른 글
[JavaScript] arguments (0) | 2024.01.17 |
---|---|
[JavaScript] 콜백(Callback) 함수 (0) | 2024.01.17 |
[JavaScript] 유효 범위(Scope) (0) | 2024.01.16 |
[JavaScript] 클로저(Closure) (0) | 2024.01.16 |
[JavaScript] 유효범위(Scope), 지역변수와 전역변수 (0) | 2024.01.14 |