q = [3,2,4,1]
let copyQ = q;
copyQ.sort();
console.log(q) // 1,2,3,4 --------> This doesnt make sense.
console.log(copyQ) //1,2,3,4 -----> This makes sense
我曾预计q会保持不变,即未如第1行那样进行排序,因为我们已经对copyQ进行了排序,但事实并非如此。
那里发生了什么事?
答案 0 :(得分:1)
sort()函数会更改初始数组。一旦通过链接复制了数组,就可以了。使用扩展运算符可避免初始数组发生突变。 Spread运算符将创建数组的副本,该副本与初始副本分开:
q = [3,2,4,1]
let copyQ = [...q];
copyQ.sort();
console.log(q)
console.log(copyQ)