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

JavaScript中如何将函数作为参数传递而非其返回值

解决函数传参时被提前执行的问题

嘿,这个坑我刚学JS的时候也踩过!问题出在你传递参数的方式上——当你写repeatFunction(roll(), n)的时候,JS会先执行roll(),把它返回的1-6随机数当成参数传给repeatFunction,而不是把roll这个函数本身传进去。这就导致你的repeatFunction拿到的是个数字,根本没法重复调用它。

要解决这个问题很简单,分两步来:

  • 第一步:传递函数本身,不要加括号
    调用repeatFunction的时候,直接传roll(不带括号)就行,比如:

    repeatFunction(roll, 5); // 这里传的是roll函数的引用,不会立即执行
    

    不带括号的函数名就是函数的“指针”,相当于告诉JS:“我要传的是这个函数本身,不是它执行后的结果”。

  • 第二步:在repeatFunction内部正确调用传入的函数
    你的repeatFunction需要在循环里主动调用传入的函数,而不是直接用它。比如正确的repeatFunction实现应该是这样:

    function repeatFunction(func, n) {
      for (let i = 0; i < n; i++) {
        // 每次循环都调用传入的函数,拿到随机结果
        const rollResult = func();
        console.log(`第${i+1}次掷骰子结果:${rollResult}`);
      }
    }
    

这样一来,当你调用repeatFunction(roll, 3)时,就会真正执行3次roll(),每次返回不同的随机数啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:21:51