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

ES6箭头函数返回值的两种写法:差异何在?哪种更规范?

ES6箭头函数两种返回值写法的差异与规范

核心差异

先拆解两种写法的本质:

  1. 第一种写法的value是一个待调用的函数:
let value = (myValue => {
    if(random_value > 50) {
        myValue("Bigger than 50");
    } else {
        myValue("Smaller than 50");
    }
});

它本身不直接返回判断结果,而是接收一个回调函数myValue,只有当你调用value(某个回调)时,才会把判断结果传给回调执行。此时value存储的是函数,不是你想要的字符串。

  1. 第二种写法的value_2是立即执行函数的返回结果:
let value_2 = (() => {
    if(random_value > 50) {
        return "Bigger than 50"
    } else {
        return "Smaller than 50"
    }
})();

这是立即执行函数表达式(IIFE)——箭头函数定义后立刻被()执行,内部的return直接把判断后的字符串返回,value_2最终存储的就是这个字符串结果。

哪种更规范?

取决于你的需求:

  • 如果你只是想直接拿到random_value的判断字符串,第二种写法完全贴合需求,是规范的,它的意图清晰,代码阅读者一眼就能懂value_2是最终计算值。
  • 第一种写法只有在需要延迟执行逻辑、通过回调处理结果的场景下才有意义,但这种情况应该给函数起个明确的名字(比如handleRandomValue),而不是用value这种模糊变量名。另外你的示例里第一种写法其实没完成“获取返回值”的目的,因为你只是定义了函数没调用,value还是个函数,不是结果。

为什么两种方式都能生效?

  • 第一种写法生效是因为JavaScript中函数是一等公民,可以被赋值给变量。你定义了一个接收回调的箭头函数,把它赋值给value后,这个变量就成了可调用的函数,传入回调后就能触发内部逻辑传递结果。
  • 第二种写法生效是因为IIFE是JavaScript的合法语法:用()包裹函数表达式,后面紧跟()会立刻执行该函数,函数的return值会被赋值给value_2,这是利用了函数的执行与返回值特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 21:20:16