两者都属于js数组Array的方法,用于遍历数组,高级浏览器支持,区别在于,forEach()方法没有返回值,只是遍历数组,而map方法会返回数组的每一项,但不改变原数组,相当于返回原数组的一个修改过的副本。
1、forEach
forEach用于调用数组的每一个元素,并将元素传递给回调函数,语法:
array.forEach(function(currentValue, index, currentArray){ } , thisValue);
- currentValue为数组当前item的一个副本,因此改变currentValue不会对原数组产生影响
- 可以通过currentArray与index改变原数组
2、map
map方法返回一个新数组,数组中每一个元素为原数组元素调用回调函数处理后的结果。语法:
var newArray = array.map(function(currentValue, index, currentArray){}, thisValue);
- 不会对原数组产生改变
- 不会对空数组进行检测
其实,map和forEach方法也不能说不改变原数组,当item为引用类型的时候,对item里的数据进行修改还是会改变的