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

为何JavaScript中可存储于变量的函数被称为函数表达式?

为什么存储在变量中的函数被称为函数表达式?

你猜的没错——函数本身就是那个表达式求值后得到的值。

在JavaScript里,表达式的核心是“能产生一个值”,这个值不一定是数字、字符串这类原始值,也可以是对象,而函数在JS里本质就是一种特殊的对象(函数对象)。

拿你给出的代码举例:

const calcAge = function (birthYear) {
  return 2037 - birthYear;
 };

这里等号右侧的function (birthYear) {...}就是一个函数表达式,它在代码执行时会被求值,最终得到的就是这个函数本身(一个函数对象)。然后这个函数对象被赋值给了变量calcAge。

你混淆的地方在于把“函数调用的结果”和“函数表达式的求值结果”搞混了:

  • 函数表达式的求值结果是函数对象,这是表达式直接产生的值;
  • 而calcAge(1995)这种函数调用是另一个表达式,它的求值结果才是函数执行后返回的数值(比如42)。

再换个角度对比:函数声明是语句,它不会产生值,只是定义一个函数;但函数表达式是表达式,它的存在就是为了生成一个函数值,这个值可以被存储、传递(比如作为参数传给其他函数),这也是JS里“函数是一等公民”的体现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:42:06