如何从 javascript 中的一个线性箭头函数 return 匿名对象?
How to return anonymous object from one liner arrow function in javascript?
我最近切换到 es6 并开始在我的代码中使用箭头函数。
重构时我遇到了下面的代码
data.map(function(d) {
return {id: d.id, selected: bool};
});
我把上面的代码改成了这个-
data.map((d) => {id: d.id, selected: bool});
但是我从上面的代码中得到了错误。我不知道这里出了什么问题?
我知道如果没有代码块,那么箭头函数提供了隐式 return。
但不知道如何 return 空对象或具有某些属性初始化的匿名对象?
编辑:
这样做有什么问题吗?只是出于好奇。
data.map((d) => new {id: d.id, selected: bool});
在对象初始值设定项周围放置括号:
data.map((d) => ({id: d.id, selected: bool}) );
圆括号对其内部表达式的值没有影响,但它们 do 具有消除所包含表达式的第一个标记的歧义的句法效果。如果没有括号,JavaScript 解析器必须决定 {
标记是表示 "Here starts a function body" 还是 "Here starts an object initializer." 它 总是 选择前者(即一段代码)。
因此,引入括号消除了混淆:前导 (
唯一可以表示的是 "here comes an expression",因此 {
里面 括号只能是 "here comes an object initializer." (换句话说,你不能在表达式中间放置代码块;如果你尝试,那么你会得到语法错误。)
您好,我认为您需要将括号添加到 return 对象文字
// 将正文括起来 return 一个对象文字表达式:
参数 => ({foo: bar})
来自 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
您也可以使用
data.map((d) => {
return {id: d.id, selected: bool}
} );
我最近切换到 es6 并开始在我的代码中使用箭头函数。 重构时我遇到了下面的代码
data.map(function(d) {
return {id: d.id, selected: bool};
});
我把上面的代码改成了这个-
data.map((d) => {id: d.id, selected: bool});
但是我从上面的代码中得到了错误。我不知道这里出了什么问题? 我知道如果没有代码块,那么箭头函数提供了隐式 return。
但不知道如何 return 空对象或具有某些属性初始化的匿名对象?
编辑:
这样做有什么问题吗?只是出于好奇。
data.map((d) => new {id: d.id, selected: bool});
在对象初始值设定项周围放置括号:
data.map((d) => ({id: d.id, selected: bool}) );
圆括号对其内部表达式的值没有影响,但它们 do 具有消除所包含表达式的第一个标记的歧义的句法效果。如果没有括号,JavaScript 解析器必须决定 {
标记是表示 "Here starts a function body" 还是 "Here starts an object initializer." 它 总是 选择前者(即一段代码)。
因此,引入括号消除了混淆:前导 (
唯一可以表示的是 "here comes an expression",因此 {
里面 括号只能是 "here comes an object initializer." (换句话说,你不能在表达式中间放置代码块;如果你尝试,那么你会得到语法错误。)
您好,我认为您需要将括号添加到 return 对象文字
// 将正文括起来 return 一个对象文字表达式: 参数 => ({foo: bar})
来自 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/Arrow_functions
您也可以使用
data.map((d) => {
return {id: d.id, selected: bool}
} );