Функция должна сохранить массив передаваемых параметров
Как сделать чтобы функция возвращала массив передаваемых другой функцией параметров в одном массиве?
У меня на выходе получается: [ [ 1, 2 ] ] [ [ 3, 4 ] ] undefined Код:
function saveCalls(obj) {
const callsHistory = (arg1, arg2) => new Array([arg1, arg2]);
return callsHistory;
}
// example 1
function sum(firstNum, secondNum) {
return firstNum + secondNum;
}
const sumWithMemory = saveCalls(sum);
console.log(sumWithMemory(1, 2)); // ===> 3
console.log(sumWithMemory(3, 4)); // ===> 7
console.log(sumWithMemory.callsHistory); // ===> [ [1, 2], [3, 4] ]
|
NovichokJS,
:-?
function saveCalls(fun) {
let callsHistory = [];
const f = (...arg) => {
callsHistory.push(arg);
return fun(...arg);
};
f.callsHistory = callsHistory;
return f
}
// example 1
function sum(firstNum, secondNum) {
return firstNum + secondNum;
}
const sumWithMemory = saveCalls(sum);
console.log(sumWithMemory(1, 2)); // ===> 3
console.log(sumWithMemory(3, 4)); // ===> 7
console.log(sumWithMemory.callsHistory); // ===> [ [1, 2], [3, 4] ]
|
круто, я думал что без слова this тут никак
|
просьба обяснить что значит выражение f.callsHistory = callsHistory;
|
Цитата:
для понимания ...
function saveCalls(fun) {
let arr = [];
const f = (...arg) => {
arr.push(arg);
return fun(...arg);
};
f.callsHistory = arr;
return f
}
// example 1
function sum(firstNum, secondNum) {
return firstNum + secondNum;
}
const sumWithMemory = saveCalls(sum);
console.log(sumWithMemory(1, 2)); // ===> 3
console.log(sumWithMemory(3, 4)); // ===> 7
console.log(sumWithMemory.callsHistory); // ===> [ [1, 2], [3, 4] ]
|
спасибо, понял. Не знал что там даже можно.
|
| Часовой пояс GMT +3, время: 17:08. |