forEach = function( ary, fn ){
for ( var i = 0, l = ary.length; i < l; i++ ){
var c = ary[ i ];
if ( fn.call( c, i, c ) === false ){
return false;
}
}
}
forEach([1,2,3],function(i,el){
console.log(i,el);
});
forEach = function( ary, fn ){
for ( var i = 0, l = ary.length; i < l; i++ ){
var c = ary[ i ];
if ( fn.call( c, i, c ) === false ){
return false;
}
}
}
forEach([1,2,3],function(i,el){
console.log(i,el);
});
8 回答5.1k 阅读✓ 已解决
6 回答3.9k 阅读✓ 已解决
5 回答3.1k 阅读✓ 已解决
9 回答2.8k 阅读
5 回答6.6k 阅读✓ 已解决
4 回答2.4k 阅读✓ 已解决
5 回答1.7k 阅读✓ 已解决
用call是为了保证this指向的是迭代对象自身。
参考链接
上个代码进一步说明一下:
然后是没有call的版本:
可以打开chrome的console验证一下,(⊙o⊙)…