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

为何typeof(f())等于'number'?JavaScript闭包代码行为疑惑

理解这段JavaScript闭包代码的行为

先拆解代码的核心逻辑:

  • 外层是一个立即执行函数表达式(IIFE):函数定义后紧跟(),意味着这个函数会被立刻执行,而非把函数本身赋值给f。
  • 外层函数执行时,创建局部变量state并赋值为1,随后返回内部的匿名函数。最终f指向的是这个内部函数,不是外层函数。

当调用f()时,执行的是这个内部函数:

  • 内部函数返回state++,这是后置自增操作——先返回当前state的值(第一次调用为1),再将state加1。
  • 这个返回值是数字类型,因此typeof f()的结果自然是'number'。

另外,内部函数通过闭包保留了对state的引用,每次调用f()都会让state递增,实现了跨函数调用维持状态的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 06:29:55