js 在array的遍历操作中修改arry中元素数量 出现的一些奇特的操作

这一生的挚爱 提交于 2019-12-05 16:41:10

在js中array是属于复杂类型,在arr1=arr2得赋值操作中,arr1得到的值并不是arr2的value,而是一个指向引用。那么修改arr1的同时arr2读取的值也会同步变化,那么问题来了,上代码

·

let a = [1, 2, 3, 4, 5, 6, 7];//定义一个7个元素的数组
// a.forEach(i => {//遍历数组
//     a.splice(0, 1, 'add_value1', 'add_value2',);//每次遍历的时候删除一个元素,添加两个元素
//     console.log(i);//打印的结果 第一次打印值:1 其余6次打印的值皆为add_value2 说明当在array遍历的过程中添加array内元素的数量,遍历次数值 仍是调用遍历时array内元素的数量值
// })

a.forEach(i => {//遍历数组
    a.splice(1, 2, 'add_value1');//每次遍历的时候删除两个元素,添加1个元素
    console.log(a[3]);//打印的结果 第一次打印值:1  第二次打印为‘add_value1’ 第三次为5 第四次为7 然后就结束遍历了!!! 而且第四次遍历时a[3]为undefined但却打印出了7 这是我所疑惑的
})

希望有大牛指教,这是什么原理

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!