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

JS作用域与闭包代码疑问:为何仅返回[Function: fun2]而非预期值?

问题分析与解决

你没调用函数!变量b确实存了fun2函数,但你现在只是直接打印这个函数对象,所以输出[Function: fun2]。要让它打印a的值,得执行这个函数。

修改后的代码示例:

function fun1(){
    let a = 2
    function fun2(){
        console.log(a)
    }
    return fun2
}

b = fun1()
b() // 调用函数,此时才会执行fun2里的console.log(a)

当fun1执行完返回fun2后,fun2依然能访问fun1作用域内的a变量,这就是闭包的特性,但只有调用fun2时,它才会执行内部的打印逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:22:35