为什么splice()方法改变了其他数组的值?

me_*_*jay 2 javascript arrays splice

我有一个阵列说

var list = ["first", "second"];
Run Code Online (Sandbox Code Playgroud)

现在我将列表分配给其他变量说

var temp = list;
Run Code Online (Sandbox Code Playgroud)

现在,当我使用拼接的名单

list.splice(0,1);
Run Code Online (Sandbox Code Playgroud)

现在,当我检查它显示的列表的值时

list = ["second"]
Run Code Online (Sandbox Code Playgroud)

当我检查temp的值时,它说

temp = ["second"]
Run Code Online (Sandbox Code Playgroud)

我想知道为什么会这样?为什么temp的值会改变?

fca*_*ran 5

当你不喜欢的任务var temp = list,你要创建一个参考templist.因此,由于splice更改list就地排列,您也在改变temp

使用slice代替返回数组的副本,就像这样

var temp = list.slice();
Run Code Online (Sandbox Code Playgroud)