【发布时间】:2021-04-19 21:32:16
【问题描述】:
最近我学会了一个新的 JavaScript 技巧,但我并不完全理解。
我知道在使用胖箭头 / lambda 表达式时需要在对象周围放置 (),如下所示:
示例:
fetch(..).then((response) => ({ data: response } ))
但这怎么也行:
const text = (await fetch(...).then(response => response.text()))
因为如果你愿意
const text = await fetch(...)...
你显然得到了 [object Promise]。
很想知道为什么会这样。我一直在尝试用谷歌搜索这个,但只是偶然发现了 IIFE,但这就像 (..)();最后加上额外的 ()。
【问题讨论】:
-
括号在那里没有做任何事情,它是等待。我通常建议不要将 async/await 与 .then/.catch 混合使用。
-
如果您只有一个参数,则圆括号对于粗箭头表示法是可选的。
a => body和(a) => body是等价的。 -
@RaymondChen 他说的是对象周围的括号,这是防止对象被视为函数体所必需的。
-
a => { foo: bar}不同于a => ({foo: bar})
标签: javascript function parentheses