var arr = [1,2,3,4,5,6,7,9];
arr.forEach(function(item, index, arr){
/*
intem是当前遍历到的元素
index是当前遍历到的元素下标
arr是数组本身
*/
document.write(item + "," + index + "," + arr + "<br>");
})
我想问下函数的组成不是function +函数名 + ()……吗?
为什么这个里面的函数只有形参,而没有函数名?
函数不一定要有函数名,比如匿名函数。
又比如立即执行函数也没有函数名:
(function(){})()
可以想一想其实有的时候写上函数名是完全没必要的,所以这样的设计也是合理的
forEach是arr的某个方法,现在这个方法需要传递一个函数作为它的入参,这个函数的名字本身已经没什么意义了,因为你只是需要一个函数,所以可以用匿名的函数,es6中的箭头函数()=>你会发现也是个匿名函数,所以现在很多方法需要函数作为入参的时候都会用到箭头函数,例如arr.map(()=>{...}),arr.filter(()=>{...}),
如果你非要有函数名也不是不行
这和你写的是一个意思
function test(item, index, arr){
/*
intem是当前遍历到的元素
index是当前遍历到的元素下标
arr是数组本身
*/
document.write(item + "," + index + "," + arr + "<br>");
}
var arr = [1,2,3,4,5,6,7,9];
arr.forEach(test);
但是你会发现不需要函数名为什么多此一举呢?
foEach 遍历肯定是在内部得呀!