javascript - 为什么这个点在 obj 中?

标签 javascript this scopes

我非常困惑在 forEach 循环中为什么 THIS 会指向对象。

我假设会输出 return this.id is 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其中指出:

If a thisArg parameter is provided to forEach(), it will be used as callback's this value.

关于javascript - 为什么这个点在 obj 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59332800/

相关文章:

powershell - Clear-Variable 和将变量设置为 NULL 的区别

magento - 如何复制 Magento CMS 页面和内容 block 以获得其他语言范围

Javascript Cloudflare工作脚本不允许发布请求

javascript - 如何使用onchange根据选择的值显示不同的信息?

javascript - 如何为来自任何对象键的不区分大小写的匹配项过滤对象数组

javascript - AngularJs 过渡水平菜单与 ng-show

Jquery $(this) 相对引用

javascript - 延迟事件监听器

c++ - 为什么我不能使用 'this->' 访问非静态函数中的静态成员?

spring - 将请求范围的 bean Autowiring 到应用程序范围的 bean 中