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

JavaScript中map函数内对象字面量不生效但new Object()生效问题

箭头函数返回对象字面量问题原因说明

这是JavaScript自身的语法规则导致的,和map方法、Node.js版本无关,核心是箭头函数的大括号存在解析歧义:

  • 当箭头函数后直接跟随{}时,JS解析器会默认将{}识别为函数体代码块,而非对象字面量
    你写的nums.map(n => { n })等价于下方的完整函数写法:
nums.map(function(n) {
  n // 仅执行单条表达式,没有return语句
  // 无显式return的函数默认返回undefined
})

这就是你得到的返回结果全是undefined的原因。

  • 当你使用new Object({n})写法时,{n}出现在表达式内部,解析器会正确将其识别为对象字面量,整个表达式执行后返回构造出的对象,因此结果符合预期。

正确的简写写法

如果想要用箭头函数简写语法直接返回对象字面量,只需要用小括号把对象字面量包裹起来,告诉解析器这是一个需要返回的表达式而非代码块即可:

nums.map(n => ({ n }))
// 输出结果:[ { n: 1 }, { n: 2 }, { n: 3 }, { n: 4 } ]

该写法和你用new Object包裹的效果完全一致,性能更优,是JavaScript的标准推荐写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 00:24:01