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

函数表达式究竟是什么?是完整赋值语句还是仅函数值?

函数表达式的定义与概念澄清

核心结论

严格来说,函数表达式仅指function(){console.log("Hello World!")}这类函数值本身,而非包含变量赋值的整个语句const funcExp = function(){console.log("Hello World!")};。

详细说明

  • 你看到的把整个赋值语句称作“函数表达式”的情况,属于口语化的简化说法,并非标准术语定义。从ECMAScript规范来看,函数表达式是一种表达式,它的执行结果是一个函数对象;而完整的赋值语句属于语句范畴,二者是不同的语法单元。
  • 单独的function(){console.log("Hello World!")}就是匿名函数表达式,这是标准叫法:它是没有自带标识符(函数名)的函数表达式。
  • 至于const funcExp = function(){console.log("Hello World!")};,变量funcExp只是持有这个匿名函数的引用,函数本身依然是匿名的。你可以通过funcExp.name看到它的name属性是funcExp(这是ES6新增的“推断名称”特性,方便调试),但这并非函数自身的标识符——对比具名函数表达式const funcExp = function myFunc(){...};,这里的myFunc才是函数自身的名字。

额外区分

  • 语句与表达式:赋值语句用于执行操作,函数表达式用于生成值,二者不能混为一谈。
  • 匿名与具名函数表达式:带自身函数名的是具名函数表达式,不带的就是匿名函数表达式,和是否被赋值给变量无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 21:28:16