Javascript Array.push()是否在改变数组?

Javascript Array.push()是否在改变数组?,javascript,arrays,Javascript,Arrays,我正在做: const array = [] ... array.push({x, y}) 那被认为是一种不好的做法吗。我应该使用let还是spread数组,因为“push”被认为是一种变异操作。但它正在发挥作用 Array.push()是否在改变数组 对 那被认为是一种不好的做法吗。我应该使用let还是spread数组,因为“push”被认为是一种变异操作 一般来说不是 有时,将数据视为不可变是有用的,甚至是必要的(例如,当您更新Redux存储时) 在这种情况下,push仍然

我正在做:

  const array = []

  ...
  array.push({x, y})

那被认为是一种不好的做法吗。我应该使用let还是spread数组,因为“push”被认为是一种变异操作。但它正在发挥作用

Array.push()是否在改变数组

那被认为是一种不好的做法吗。我应该使用let还是spread数组,因为“push”被认为是一种变异操作

一般来说不是

有时,将数据视为不可变是有用的,甚至是必要的(例如,当您更新Redux存储时)

在这种情况下,
push
仍然不是一个坏主意,您不应该对原始阵列执行此操作

例如,这很好并且没有副作用:

function functionalFunction(input) {
    const output = [...input];
    output.push({x, y});
    // A bunch of other operations that mutate the array go here
    // Be careful not to mutate any objects in the array
    return output;
}

取决于-是否要避免对数组进行变异?请注意,变异本身并不坏,这取决于您的用例。我有点夸张,但这就像是在问“两个数字相加可以吗,还是应该相乘?”。这真的取决于你想要/需要从结果中得到什么。我不明白这个问题,你不确定变异意味着什么吗?(标题暗示你似乎对此不确定,但身体有点不同)“我应该使用let吗?”。您是否认为不允许将
推送到使用
const
定义的数组?不允许使用
const
array=[1,2]
那样重新分配变量。您可以通过更改数组和对象的属性来改变它们。例如
const a={}
a.key1='value'
是允许的。但是,
a={key2:'value 2'}
不被允许,这正是用例。我推送一个对象的数组。我现在可以看出,改变数组通常不是问题,可以用const来完成。