首页 > 解决方案 > 如何重新分配函数参数

问题描述

我知道重新分配函数参数可能很糟糕,但我不太明白在这种情况下会如何完成?我正在使用 forEach 循环循环遍历待办事项列表数组(位于对象上)todos并更改completed属性,但我看不出我如何不能重用eachTodo

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

    this.todos.forEach((eachTodo) => {
      if (completedTodos === totalTodos) {
        eachTodo.completed = false;
      } else {
        eachTodo.completed = true;
      }
    });

完整的项目在这里

标签: javascriptfunctionparameters

解决方案


您不是在此处重新分配参数。如果您要重新分配它们,则其中会有一些线条eachTodo =-但此处并非如此。相反,您正在改变eachTodo参数。

如果您还想避免改变参数,一种选择是使用.map创建each的副本eachTodo,然后在调用this.todos之外重新分配:forEach

this.todos = this.todos.map((eachTodo) => {
  if (completedTodos === totalTodos) {
    return { ...eachTodo, completed: false };
  } else {
    return { ...eachTodo, completed: true };
  }
});

(确保没有其他对单个todos 的引用以避免内存泄漏)


推荐阅读