[JavaScript] 함수 호출과 반환값

수민🐣·2022년 1월 11일
0

JavaScript

목록 보기
11/32

1. 복수의 반환값을 개별 변수에 대입

: return 명령으로 복수의 값을 반환할 수 없기에 배열/객체로 값을 하나로 모은 후에 반환할 수 있다.

function getMaxMin(...nums) {
	return [Math.max(...nums), Math.min(...nums)];
}

let result = getMaxMin(10, 35, -5, 78, 0);
console.log(result);   // 결과 : [78, -5]

let [max, min] = getMaxMin(10, 35, -5, 78, 0);
console.log(max);     // 결과 : 78
console.log(min);     // 결과 : -5

2. 함수 자신을 재귀적으로 호출하기 - 재귀함수

: 어떤 함수가 자기 자신을 호출하는 것 또는 그러한 함수 자체

function factorial(n){
    if (n != 0){ return n * factorial( n - 1 ); }
    return 1;
}
console.log(factorial(5)); // 결과 : 120

: factorial 함수는 주어진 자연수 n의 계씅을 구하기 위한 사용자 정의 함수
: 주어진 숫자로부터 1을 뺀 것으로 자기 자신(factorial 함수)을 재귀적으로 호출하고 있다. = n * factorial( n - 1 )
: 재귀 함수에서는 재귀의 종료점을 꼭 써줘야 한다. 종료점이 없으면 영원히 재귀 호출을 계속하게 된다. = return 1

3. 함수의 인수도 함수 - 고차함수

: 함수를 인수, 반환값으로서 취급하는 함수
: 큰 범위의 기능만을 정의해두고 상세한 기능은 함수의 이용자가 자유롭게 결정한다.

// 고차 함수 arrayWalk를 정의
function arrayWalk(data, f) {
    for (var key in data) {
        f(data[key], key);
    }
}

//배열을 처리하기 위한 사용자 정의 함수
function showElement(value, key) {
    console.log(key + ' : ' + value);
}

var ary = [1, 2, 4, 8, 16];
arrayWalk(ary, showElement);
/*
결과
0 : 1
1 : 2
2 : 4
3 : 8
4 : 16
*/
//고차 함수 arrayWalk를 정의
function arrayWalk(data, f) {
    for (var key in data) {
        f(data[key], key);
    }
}

//결과값을 대입하기 위한 글로벌 변수
var result = 0;
function sumElement(value, key) {
    // 주어진 배열 요소로 변수 result를 가산
    result += value;
}

var ary = [1, 2, 4, 8, 16];
arrayWalk(ary, sumElement);
console.log('합계 : ' + result); //결과 : 합계 : 31

4. '일회용 함수'는 익명 함수로

: 고차함수에서 인수로 주어지는 함수가 '그 장소에 한해서만' 사용되는 일이 자주 있기 때문에 (= 일회용 함수) 이름을 부여한 함수로 정의하는 것보다는 익명 함수로 만든다.

// 익명 함수를 이용하여 위의 코드를 수정함.
// 고차 함수 arrayWalk를 정의
function arrayWalk(data, f) {
    for (val key in data) {
        f(data[key], key);
    }
}

var ary = [1, 2, 4, 8, 16];
arrayWalk(
    ary,
    function (value, key) {
        console.log(key + ' : ' + value);
    }
);

좀 더 관계에 대해 이해하기 수월해지고, 의도하지 않은 이름의 중복을 회피할 수 있다.

0개의 댓글

관련 채용 정보