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

JavaScript中带return与不带return的函数哪种写法更优?

JavaScript 中return语句写法的实际开发选择

实际开发中优先推荐使用带return的第二种写法,第一种无return的写法仅适合写一次性的临时测试demo,完全不适合正式项目使用,核心原因如下:

  • 函数复用性差距极大
    第一种写法把「弹出输入框获取用户里程」「计算出行费用」「控制台打印结果」三个完全独立的逻辑全部耦合在同一个函数里,核心的费用计算逻辑根本没法单独复用。如果后续你需要从页面输入框、后端接口等其他来源获取里程值计算费用,或者需要把计算结果渲染到页面、存入本地缓存、传给其他接口做后续处理,第一种写法完全做不到——它既写死了输入来源必须是prompt弹窗,又没有把计算结果返回,你根本拿不到计算值做后续操作。
    第二种写法把费用计算逻辑抽成了独立的、带return的函数,这个计算函数不关心输入的km是从哪来的,只要传里程值进去就能返回计算结果,不管后续交互逻辑怎么改,计算部分的代码可以直接复用。
  • 可维护性、可测试性差距明显
    带return的计算函数是典型的纯函数:相同输入永远返回相同输出,执行过程不会修改外部变量、不会触发弹窗/打印/请求这类额外副作用。排查问题的时候你只需要传不同的里程值进去,看返回结果对不对就能快速定位计算逻辑有没有错,写自动化测试也非常简单。
    第一种无return的函数执行时会连带触发一堆副作用,测试的时候需要额外模拟prompt输入、拦截console输出才能验证计算逻辑是否正确,代码规模变大之后,这种混了多类逻辑的函数排查bug的成本会高很多。
  • 符合通用的代码设计原则
    正式项目里写函数的通用思路就是:纯计算逻辑和带交互、副作用的逻辑分离,计算类函数统一通过return返回结果,不要在计算函数里掺杂输入输出操作。

你给出的两段示例代码参考:
无return的耦合写法:

function calculatingExpenses() {
  let km = prompt("How far is your target");
  let partialExpenses = 1.65;
  const wholeExpenses = km *= partialExpenses;
  console.log(wholeExpenses);
}

带return的拆分写法:

function wholeFunction() {
    function calculatingExpenses(km) {
      return km * 1.65;
    }
    const km = prompt("How far is your target?");
    const wholeExpenses = calculatingExpenses(km);
    console.log(wholeExpenses);
}

额外提个小注意点:prompt返回的结果是字符串类型,虽然做乘法时JS会做隐式类型转换,但正式写的时候最好先显式转成数字类型再计算,避免出现意外的字符串拼接问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 14:12:13