我需要从内部函数fn获取值(arr,sum)。我试图将其推入外部函数的results数组中,或尝试像a = fn();这样分配它,不行。我做错了什么以及如何在外部函数中获得此值?
function func(limit) {
let results = [];
let arr = [];
console.log(limit);
function fn() {
let arg = arguments;
let sum = 0;
for (let i = 0; i < arg.length; i++) {
sum += arg[i];
arr.push(arg[i]);
};
fn();
console.log(arr, sum);
results.push({args: arr, result: sum});
return sum;
};
fn();
console.log(results);
return fn;
};
const mSum = func(2);
console.log(mSum(3,4,5));
func按预期返回12,但我还需要进一步处理结果数组,因此我尝试使用
results.push({args:arr,result:sum});
您是否使用console.log(arr,sum);您可以在那里看到它,但是如何将其放在外部函数func中呢? 结果它按下了键,但是值是空数组和0。
答案 0 :(得分:2)
您可以返回对象,而不是单个值。
function func(limit) {
function fn() {
let arg = arguments;
let sum = 0;
for (let i = 0; i < arg.length; i++) {
sum += arg[i];
arr.push(arg[i]);
};
return { args: arr, result: sum };
}
let results = [];
let arr = [];
return fn;
};
const mSum = func(2);
console.log(mSum(3, 4, 5));
答案 1 :(得分:0)
您正在返回一个函数。不是结果。因此const mSum = func(2);
返回您的函数。如果需要该函数的结果,则必须调用它
const mSum = func(2); // function
console.log(mSum()); //return value of the returned function
答案 2 :(得分:0)
您可以做类似的事情
function fn() {
...
return {args: arr, result: sum};
};
然后您将可以通过此功能同时获得arr
和sum
const { args, result } = fn();
答案 3 :(得分:0)
function func(limit) {
let results = [];
let arr = [];
console.log(limit);
function fn() {
let arg = arguments;
let sum = 0;
for (let i = 0; i < arg.length; i++) {
sum += arg[i];
arr.push(arg[i]);
};
console.log(arr, sum);
results.push({args: arr, result: sum});
return results; // return 'results' rather than sum
};
console.log(results); // When you console.log(results), fn is not running yet, so you get a []
return fn;
};
const mSum = func(2);
const mSum2 = mSum(3,4,5);
console.log(mSum2[0].args,mSum2[0].result);
答案 4 :(得分:0)
起初,您的代码中有一些错误。
在function fn()
中定义let arg = arguments
。但是您从未定义arguments
,所以for循环不会迭代。
还返回一个函数,而不是结果。您可以通过以下代码获得结果;
const mSum = func(2);
console.log(mSum());