我在forEach循环中感到非常困惑,为什么THIS会指向obj。
我假设将输出返回this.id为undefined,因为它是在词法函数中调用的。 THIS会将其指向窗口。
function foo(el) {
console.log( el, this.id);
}
var obj = {
id: "awesome"
};
[1, 2, 3].forEach( foo, obj );
// 1 "awesome" 2 "awesome" 3 "awesome"
// Easy way to check
[1, 2, 3].forEach( function(el){
console.log( el, this.id);
}, obj);
Array.prototype.forEach
的第二个参数是thisArg
。参见https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach,其中指出:
如果将thisArg参数提供给forEach(),它将用作回调的this值。