gpt4 book ai didi

javascript - 箭头函数中包裹对象文字的括号是什么意思?

转载 作者:行者123 更新时间:2023-12-02 22:32:23 25 4
gpt4 key购买 nike

我见过这样的 JavaScript 代码:

let a = () => ({ id: 'abc', name: 'xyz' })

括号 ( … ) 的作用是什么?包装此实例中引用的对象?它是 return 的简写吗? ?

最佳答案

没有。这些括号产生一个对象文字。 Arrow functions有多种语法,其中之一是:

( … ) => expression

这将隐式返回一个表达式,例如:

() => 1 + 1

该函数将隐式返回1 + 1,即2。另一种是这样的:

( … ) => { … }

这将创建一个 block如果您不想隐式返回表达式,并且想要进行中间计算或根本不返回值,则可以容纳多个语句。例如:

() => {
const user = getUserFromDatabase();
console.log(user.firstName, user.lastName);
}

当您想隐式返回对象文字时,就会出现问题。您不能使用 ( … ) => { … } 因为它会被解释为一个 block 。解决方案是使用括号。

括号中的 { … } 被解释为对象文字,而不是 block 。在 grouping operator , ( … ),其中只能存在表达式。 block 不是表达式,而是对象字面量,因此假定为对象字面量。因此,它将使用以下语法而不是创建 block :

( … ) => expression

并隐式返回一个对象文字。如果没有括号,它将被解释为 labels和字符串,而不是对象字面量的键和值。

let a = () => { 
id: 'abc', //interpreted as label with string then comma operator
name: 'xyz' // interpreted as label (throws syntax error)
}

此处的逗号将被解释为 comma operator ,并且由于操作数必须是表达式,而标签是语句,因此会抛出语法错误。

关于javascript - 箭头函数中包裹对象文字的括号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com