Wit*_*ult 37 javascript ecmascript-6 arrow-functions
我最近切换到es6并开始在我的代码中使用箭头函数.在重构时我遇到了代码
data.map(function(d) {
return {id: d.id, selected: bool};
});
Run Code Online (Sandbox Code Playgroud)
我将上面的代码改为此 -
data.map((d) => {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)
但是我从上面的代码中得到了错误.我不知道这里有什么问题?我知道如果没有代码块,则会有箭头函数提供的隐式返回.
但是不知道如何返回空对象或匿名对象,并初始化了一些属性?
编辑:
如果我这样做会有什么问题?只是出于好奇的缘故.
data.map((d) => new {id: d.id, selected: bool});
Run Code Online (Sandbox Code Playgroud)
Poi*_*nty 74
在对象初始化器周围放置parens:
data.map((d) => ({id: d.id, selected: bool}) );
Run Code Online (Sandbox Code Playgroud)
括号对它们内部的表达式的值没有影响,但它们确实具有消除所包含表达式的第一个标记的歧义的语法效果.如果没有括号,JavaScript解析器必须决定{令牌是否意味着"Here starts a function body"或"Here starts a object initializer".它总是选择前者(即代码块).
因此,引入括号可以消除混淆:领导者唯一(可以表达的意思是"这里有一个表达式",因此括号{ 内部只能是"这里是一个对象初始化器".(换句话说,您不能在表达式中间放置一段代码;如果您尝试,则会出现语法错误.)
| 归档时间: |
|
| 查看次数: |
9851 次 |
| 最近记录: |