: 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
: 어떤 함수가 자기 자신을 호출하는 것 또는 그러한 함수 자체
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
: 함수를 인수, 반환값으로서 취급하는 함수
: 큰 범위의 기능만을 정의해두고 상세한 기능은 함수의 이용자가 자유롭게 결정한다.
// 고차 함수 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
: 고차함수에서 인수로 주어지는 함수가 '그 장소에 한해서만' 사용되는 일이 자주 있기 때문에 (= 일회용 함수) 이름을 부여한 함수로 정의하는 것보다는 익명 함수로 만든다.
// 익명 함수를 이용하여 위의 코드를 수정함.
// 고차 함수 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);
}
);
➡ 좀 더 관계에 대해 이해하기 수월해지고, 의도하지 않은 이름의 중복을 회피할 수 있다.