fezaoduke / fe-practice-hard

晚练课
69 stars 6 forks source link

第 110 期(数据结构-数组):清空数组 #113

Open wingmeng opened 5 years ago

wingmeng commented 5 years ago
let arr = [1, 2, 3];

如何清空上面的数组?常见的方式有两种:

// 方法1:将数组长度改为 0
arr.length = 0;

// 方法2:重新赋值为空数组
arr = [];

这两种方法从运行结果上来看,似乎是一样的,但在一些细节上是有很大区别的:

  1. arr.length = 0 将数组长度改为 0 后,会清空数组,同时删除数组中的所有索引。

    let arr = [1, 2, 3];
    let arr1 = arr;
    
    arr.length = 0;
    console.log(arr1);  // 返回:[],因为它引用了 arr,此时 arr 中的索引被清空了,所以 arr1 也为空
  2. arr = [] 将数组赋值为空数组,只是改变了栈指针,之前被其他变量引用的数据仍有效。

    let arr = [1, 2, 3];
    let arr1 = arr;
    
    arr = [];
    console.log(arr1);  // 返回 [1, 2, 3]