如何重新分配功能参数

时间:2018-07-08 08:26:55

标签: javascript function parameters

我知道对reassign function parameters可能会很不好,但是我不太了解在这种情况下如何做?我正在使用forEach循环来遍历待办事项列表数组(在对象上)todos并更改completed属性,但是我看不到如何无法重用{{1} }

如何将其重写以使其具有相同的功能但不重复使用eachTodo

eachTodo

完整项目here

2 个答案:

答案 0 :(得分:2)

您不在此处重新分配参数。如果您要重新分配它们,则其中将带有eachTodo =的某些行-但这不是这种情况。而是变异 eachTodo参数。

如果您还希望避免更改参数,则一种选择是使用.map为每个eachTodo创建一个副本,然后重新分配{{1 }}在this.todos通话之外:

forEach

(请确保没有其他对各个this.todos = this.todos.map((eachTodo) => { if (completedTodos === totalTodos) { return { ...eachTodo, completed: false }; } else { return { ...eachTodo, completed: true }; } }); 的引用,以避免内存泄漏)

答案 1 :(得分:0)

您的代码未分配给eachTodo,因此我看不到有关重新分配参数的讨论的链接如何相关。

“重用eachTodo”是什么意思?如果您是想让代码少提及变量名,那么这是一种方法:

  if (completedTodos === totalTodos) {
    eachTodo.completed = false;
  } else {
    eachTodo.completed = true;
  }

可以减少(通过拉出公用的eachTodo.completed =部分):

eachTodo.completed = completedTodos === totalTodos ? false : true;

此行可以进一步简化(通常,只要您有一个?:运算符,且其中一个分支只是truefalse,就可以简化):

eachTodo.completed = completedTodos !== totalTodos;