Javascript 为什么在obj中出现这一点?
在forEach循环中,我非常困惑为什么这会指向obj 我假设输出将返回this.id未定义,因为它是在词法函数中调用的此将指向窗口Javascript 为什么在obj中出现这一点?,javascript,this,scopes,Javascript,This,Scopes,在forEach循环中,我非常困惑为什么这会指向obj 我假设输出将返回this.id未定义,因为它是在词法函数中调用的此将指向窗口 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
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
。请参见哪些国家:
如果为forEach()提供了thisArg参数,则它将用作回调函数的this值
您明确告诉它使用
obj
作为this
。这就是forEach
的第二个参数的作用。在forEach方法中,第二个参数应该用于数组的索引。为什么对象变量可以在第二个参数中使用?请参见forEach syantax。第一个参数是回调函数,第二个参数是执行回调时的值。太好了。分享forEach语法规则。太好了。我明白了。