我在使用forEach函数的时候,先将原始数据赋值给了一个新的变量,然后在删除新变量temp中的数据时,原始数据也发生了改变,这是为什么??

var arrObj = [5,39,6,38,64,26,14,48,59,25,239,6,];
var temp = arrObj;
arrObj.forEach(function (val, index) {
  if (val % 2 == 0) {
    temp.splice(temp.indexOf(val), 1)
  }
});
console.log(arrObj);

刚开始我使用原始数据,遍历出对应的值,然后查找出相对应的索引,在原始数据上删除。程序执行完成之后我发现,forEach函数并不能遍历出所有的元素。

于是我将原有的数据赋值给了一个新的变量,再进行数组遍历的时候,操作,新创建的数组,却发现,原有的原始数据也跟这发生了改变,

而我并没有操作原始数据

不明呗这是什么原因。

js的浅拷贝和深拷贝问题了。你可以去研究一下。
点这里

https://blog.csdn.net/nodeman/article/details/45691863

数组是复杂数据类型 赋值的是堆内存中的地址 所以是通过地址修改到了原始数据 希望对你有帮助