forEach() 方法对数组的每个元素执行一次提供的函数
那怎样用forEach把[1,2,3]改写成[2,2,2]
错误用法
[1,2,3].forEach(item=>{ item=2 })
为什么这样不行
因为[1,2,3]中的每一项的数据类型都是基本类型 这样就相当于 在栈中又新开辟了一个空间 item:2 这是引用 【改变a引用并不会对b引用造成影响,然而改变数组对象可以 】
参考 基本数据类型&引用数据类型
正确用法
[1,2,3].forEach((item,index,self)=>{ self[index]=2 //因为改变了数组对象的值 })
其他用法for循环,map等
[1,2,3].map(item=> 3)
在vue中的应用
在data中声明一个对象如果要响应式的更改这个对象中的某个属性 那么这个属性要在对象中提前声明
forEach响应式应用
错误用法【数组更改无法响应式监听】vue并不是不能监听数组中的原始类型值,而是太耗性能,所以不去监听数组中的原始类型。
new Vue({ el: '#app', data() { return { arr: [1, 1] } }, create() { this.arr.forEach((item, index, self) => { self[index] = 2 }) } })
正确用法
new Vue({ el: '#app', data() { return { arr: [1, 1] } }, create() { this.arr.forEach((item, index, self) => { this.$set(this.arr, index, 2) }) } })
forEach 其他注意事项