数组拓展

2020-09-07  本文已影响0人  变量只提升声明不提升赋值
    var a1 = [1,2,3,4,5]
    var a2 = a1
    a2.length = 3
    console.log('a1:' + a1, '-----a2:' + a2)

上述代码中将a1这个数组赋值给了a2
然后改变了a2数组的长度


image.png

可以看到,a1的数组长度也改变了
这是因为,我们在赋值的时候其实并没有复制出一个新的数组出来,而是复制了一个指向这个数组的指针 也就是说现在又a1 a2两个指针指向这个数组 当我们去修改a2数组的时候,其实修改的还是原数组 所以a1的长度也会被改变

es5提供的语法 arr.concat(); 来克隆数组

    var a1 = [1,2,3,4,5]
    const a2 = a1.concat();
   a2.length = 3
   console.log('a1:' + a1, '-----a2:' + a2)
image.png

可以看到,现在去修改a2的数组已经不会影响到a1这个数组了

es6也提供了扩展符来执行这一操作

const a1 = [1, 2];
// 写法一
const a2 = [...a1];
// 写法二
const [...a2] = a1;

这样写的话也会创造出一个新的数组

上一篇 下一篇

猜你喜欢

热点阅读