You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何向嵌套内部函数传递数组参数及传递内部函数作为参数?

JavaScript高阶函数的参数传递问题

先贴出题目中的代码:

const score = [98, 76, 94, 82, 70, 95, 45, 90]
const determinePass = function (threshold) {
    return function (array) {
        return array.map(function (value) {
            return value > threshold ? "pass" : "fail";
        })
    }
}

1. 怎么给内部函数传数组参数?

determinePass是个高阶函数,得先传入及格线threshold,它才会返回那个负责处理数组的内部函数。有两种简单的传参方式:

  • 链式直接调用
    调用determinePass时先给阈值,紧接着跟上数组参数:
// 设定80分为及格线,直接传入score数组
const result = determinePass(80)(score);
console.log(result); // 输出: ["pass", "fail", "pass", "pass", "fail", "pass", "fail", "pass"]
  • 先存内部函数再调用
    把determinePass返回的内部函数存成变量,之后再给这个变量传数组:
// 先生成一个以80分为及格线的判断函数
const checkPass80 = determinePass(80);
// 传入score数组得到结果
const result = checkPass80(score);
console.log(result); // 输出和上面一样

2. 怎么把内部函数作为参数传递?

determinePass(threshold)的返回值就是那个内部函数,所以直接把这个返回值当成参数传给其他函数就行。举个实际例子,写个批量处理多个数组的函数,把内部函数传进去:

// 批量处理函数:接收判断函数和任意数量的数组
function batchCheck(checkFunc, ...arrays) {
    return arrays.map(arr => checkFunc(arr));
}

// 先生成内部函数(70分为及格线)
const checkPass70 = determinePass(70);

// 把这个内部函数作为参数传给batchCheck
const multipleResults = batchCheck(checkPass70, score, [65, 88, 72]);
console.log(multipleResults);
// 输出结果:
// [
//   ["pass", "pass", "pass", "pass", "pass", "pass", "fail", "pass"],
//   ["fail", "pass", "pass"]
// ]

你也可以不用提前存变量,直接在传参时调用determinePass生成内部函数,效果完全一样:

const multipleResults = batchCheck(determinePass(70), score, [65, 88, 72]);

内容的提问来源于stack exchange,提问作者Darudul Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 11:21:07