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

将函数输出赋值给变量时,函数是否会完整执行?

关于函数调用与返回值执行逻辑的解答

嘿,这个问题问得很实在!直接给你结论:当你执行var c = a();的时候,函数a()会被完整地执行一遍,绝对不是只提取返回值那么简单。

具体解释:

JavaScript在处理函数调用的时候,会严格按照顺序执行函数体里的每一行代码——也就是你示例里写的blah blah blah部分,不管这部分代码是打印日志、修改变量还是调用其他函数,都会全部跑完。只有当函数体的所有逻辑执行完毕,遇到return b的时候,才会把b的值返回,然后赋值给变量c。

举个更直观的例子,把你的函数a()补全一下:

function a() {
  console.log("我是函数a里的代码,正在执行!");
  let b = 456;
  // 这里可以加任意逻辑,比如修改全局变量、调用其他函数
  return b;
}
var c = a();
// 此时控制台会先输出"我是函数a里的代码,正在执行!",然后c的值被设为456

结合你的示例代码补充:

在你的代码里,当var c = a();执行完成后,c就已经拿到了a()返回的b值。之后调用d(c)的时候,只是把已经存储好的c的值传递给函数d,不会再重新执行a()了。

核心要点总结:

  • 只要写出a()这种函数调用语句,函数体的所有代码就会被完整执行
  • return语句的作用是终止函数执行,同时把指定的值返回给调用者,完成赋值操作
  • 变量c存储的是a()执行完毕后的返回结果,后续使用c不会再触发a()的执行

内容的提问来源于stack exchange,提问作者The One Of Rowlet

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:36:33