首页 > 试题广场 >

let arr = [1, 2, 3, 4, 5]; 下列选

[单选题]
let arr = [1, 2, 3, 4, 5];
下列选项中哪种方式不能实现arr数组的拷贝:(  

  • [].concat(arr); 
  • arr.slice();
  • JSON.parse(JSON.stringify(arr));
  • arr.splice(0);
splice 的机制:破坏性操作、splice 方法的定义是从数组中删除元素。当你执行 arr.splice(0) 时,发生了两件事:
1. 返回值:返回了一个包含被删除元素的新数组。
2. 副作用:原数组被清空了
arr.splice(0) 的意思是:从索引 0 开始,一直删到最后。
因为原数组被改变了,所以这不符合“拷贝”的定义(拷贝通常指创建一个副本,同时保持原件完整)。
let arr = [1, 2, 3, 4];

// 执行 splice(0)
let result = arr.splice(0); 

console.log(result); // 输出: [1, 2, 3, 4]  (看起来像是拷贝的结果)
console.log(arr);    // 输出: []             (原数组被清空了!)
·splice 是“剪切”:拿走数据,原数组丢失数据。
·slice 是“复印”:拿走数据副本,原数组保留数据。

结论:虽然 result 确实包含了原本的数据,但 arr 变成了空数组。这在大多数需要“拷贝”的场景下是不可接受的。


发表于 2026-03-26 19:08:08 回复(0)