Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有人能给我解释一下这个es6语法吗?_Javascript_Ecmascript 6 - Fatal编程技术网

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
}