gpt4 book ai didi

javascript - 从作为参数传递给 JavaScript 中另一个函数的函数中提取参数

转载 作者:行者123 更新时间:2023-11-29 23:15:52 25 4
gpt4 key购买 nike

我是 JavaScript 新手。我有一个小程序,其中一个函数将另一个函数作为参数。我正在尝试提取/访问作为参数传递的函数的参数。这是一个例子:

function test(precondition, postcondition, func)   {
// Extract arguments of func which in this case should be 5 and 6
// This is required to check whether isNumber(5) and isNumber(6)
// both return true, so that precondition is met
}

var add = test((isNumber, isNumber), isNumber,
function add(x, y) {return x+y; });

console.log(add (5, 6));

isNumber 是一个函数,如果输入是数字(已定义)则返回 true。试图按照规则要求提供最少的可执行代码。任何帮助是极大的赞赏。谢谢!

最佳答案

这是一个解决方案,只需要您更改 test 中的代码(除了您调用测试的地方我已经替换了 (isNumber, isNumber)使用 [isNumber, isNumber]).

您无需执行任何特殊操作即可访问 add 的参数,因为您在 test 中创建了函数并将其返回以供 调用>console.log(add(5, 6));.

在任何函数中使用arguments 都会为您提供函数的数组形式的参数。

func(... arguments); 中的 ... 是扩展操作,它接受一个数组并将其扩展到位。参见 spread operator .

function test(precondition, postcondition, func)   {
// Extract arguments of func which in this case should be 5 and 6
// This is required to check whether isNumber(5) and isNumber(6)
// both return true, so that precondition is met
return function() {
for (const i in arguments) {
const argi = arguments[i];
const precondition_i = precondition[i];
console.log('precondition['+i+'] met: ' + precondition_i(argi));
}
const r = func(... arguments);
console.log('postcondition met: ' + postcondition(r));
return r;
};
}

var add = test([isNumber, isNumber], isNumber, function add(x, y) {return x+y; });

console.log(add(5, 6));

或者不使用 arguments... 并且不传入数组作为 precondition 的不太通用的解决方案:

function test(precondition, postcondition, func)   {
// Extract arguments of func which in this case should be 5 and 6
// This is required to check whether isNumber(5) and isNumber(6)
// both return true, so that precondition is met
return function(x, y) {
console.log('precondition met for x: ' + precondition(x));
console.log('precondition met for y: ' + precondition(y));
const r = func(x, y);
console.log('postcondition met: ' + postcondition(r));
return r;
};
}

var add = test(isNumber, isNumber, function add(x, y) {return x+y; });

console.log(add(5, 6));

关于javascript - 从作为参数传递给 JavaScript 中另一个函数的函数中提取参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52799832/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com