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

如何将多参数匿名立即执行函数转为箭头函数?为何改写后返回NaN

问题原因

首先你的原始写法是立即调用函数表达式(IIFE):匿名函数定义完成后立刻传入参数1和2执行,变量x拿到的是函数执行后的返回值,所以结果为3。

你改写的箭头函数存在两个核心问题:

  • 你当前的写法完全没有调用逻辑,变量x实际被赋值为箭头函数本身,而非函数执行后的返回值。当你把函数类型当做数值使用时,就会得到NaN的结果。
  • 箭头函数不能直接在定义末尾加括号实现立即调用,受JS运算符优先级限制,直接写(y,z) => y+z(1,2)会被JS解析为「返回y + z(1,2)的箭头函数」,即把参数z当做函数调用,自然无法得到预期的数值结果。

正确写法

如果要实现和原始代码等价的箭头函数IIFE,需要先把整个箭头函数用括号包裹,再执行调用:

// 和原始代码逻辑完全一致,调用时传参
let x = ((y, z) => { return y + z })(1, 2);

// 如果你想用参数默认值,调用时不需要传参
let x = ((y = 1, z = 2) => { return y + z })();

上述两种写法执行后,x的结果都是3。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:18:01