2

我已经开始通过 John Resig 的书学习纯 JS,并发现 call() 函数的例子非常不清楚:

function forEach (list, callback) {
    for (var i = 0; i < list.length; i++) {
        callback.call(list[i],i)
    };
}

var strings = [ 'hello', 'world', '!'];

forEach(strings, function(index){
    console.log(strings[index]);
});

这个怎么运作?谁能解释一下?

4

1 回答 1

3

call方法用于在特定上下文中调用函数(换句话说,具有特定值 for this)。callback该示例在当前列表项的上下文中调用该函数,并传入 的值i

forEach(strings, function(index){
    console.log(this); // "String ['hello']" etc...
    console.log(index); // "0" etc...
});

如果callback函数被正常调用(没有call方法),那么上下文将是全局对象或undefined(如果代码在严格模式下运行)。

于 2013-10-18T10:41:10.317 回答