Javascript 有人能给我解释一下这个es6语法吗?
有人能解释一下下面的说法吗Javascript 有人能给我解释一下这个es6语法吗?,javascript,ecmascript-6,Javascript,Ecmascript 6,有人能解释一下下面的说法吗 return state.map(todo => (todo.id === action.id) ? {...todo, completed: !todo.completed} : todo ) 更具体地说,这条线 {…todo,已完成:!todo.completed} 为什么三元运算的真实部分有两个参数 是什么 只需复制一份todo,但要有一个新的completed属性。在这种情况下,它相当于todo的complet
return state.map(todo =>
(todo.id === action.id)
? {...todo, completed: !todo.completed}
: todo
)
更具体地说,这条线
{…todo,已完成:!todo.completed}
为什么三元运算的真实部分有两个参数
是什么
只需复制一份todo
,但要有一个新的completed
属性。在这种情况下,它相当于todo
的completed属性的倒数。它是一个普通的JS对象
只需复制一份
todo
,但要有一个新的completed
属性。在这种情况下,它相当于todo
的completed属性的倒数。它是一个普通的JS对象。的…todo
,是扩展语法,意思是完成:!todo.completed
属性将与以前的属性一起添加到现有的todo对象中。使用它,您不必手动复制现有属性
将其视为展开“待办事项”对象
另外,(todo.id==action.id)
正在检查两个对象中的id
是否相同,然后添加completed:!todo.completed
属性,否则保持旧对象不变
请查看此参考指南:
…todo
是扩展语法,意思是完成:!todo.completed
属性将与以前的属性一起添加到现有的todo对象中。使用它,您不必手动复制现有属性
将其视为展开“待办事项”对象
另外,(todo.id==action.id)
正在检查两个对象中的id
是否相同,然后添加completed:!todo.completed
属性,否则保持旧对象不变
请查看此参考指南:
这就像是
if/else
但是作为一行。因此,如果(todo.id==action.id)
的计算结果为true,则返回?
之后的内容。对于比ES6更新的对象,它类似于if/else
,但作为一行。因此,如果(todo.id==action.id)
的计算结果为true,则返回?
之后的内容。使用比ES6更新的对象
{
...todo,
completed: !todo.completed
}