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

函数返回函数的执行差异:为何func1输出7而func2无控制台输出?

两个JavaScript函数输出差异的原因解析

先看你给出的代码:

function func1(){
     function sum(){
        console.log(2+5);
    }
    return sum();
}
func1();

function func2(){
    return (function sum(){
       console.log(2+5);
   })
    
}

func2();

核心差异就在函数是否被主动调用:

  • func1里,return sum()中的sum()是带括号的写法,这表示直接调用sum函数。所以当func1执行时,会先定义sum,然后立即调用它,控制台自然输出7,最后返回sum函数的执行结果(这里sum没有return语句,所以返回undefined)。
  • func2里,return (function sum(){...})返回的是一个未被调用的函数表达式。当你执行func2()时,只是拿到了这个sum函数的引用,但并没有触发它执行,所以控制台不会有任何输出。

如果想让func2也输出7,只需要给返回的函数加上调用括号就行:

function func2(){
    return (function sum(){
       console.log(2+5);
   })() // 这里加上括号,调用这个函数表达式
}
func2();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 03:27:02