javascript - “this”指的是在方法内部定义的 IIFE 内部定义的内部箭头函数?
问题描述
我的理解是箭头函数不会重新绑定this
,那么为什么它会根据调用方式来引用不同的对象呢?
const foo = {
speak() {
(() => {
console.log(this);
})();
}
};
foo.speak(); // Logs foo
const speak = foo.speak;
speak(); // Logs the global object
感谢您的时间!
解决方案
箭头函数保留 的词法值this
。这意味着, 的值this
取决于箭头函数的定义方式,而不是箭头函数的调用方式。
您在此处看到的不一致行为是因为每次speak
调用函数时都会“定义”内部箭头函数。在那个定义点上,箭头函数捕获与和this
不同的当前值。foo.speak()
speak()
作为旁注,这似乎是 JavaScript 琐事。我不希望“真正的”代码库有这种片段。
推荐阅读
- python - 如何使用 PyCharm 在 WSL ubuntu 中调试由 bash 脚本调用的库 python 脚本
- c# - 函数外部可用的 C# 数组
- javascript - Popper 对齐顶部下拉菜单
- windows - 无法更改 mongod 的 dbPath
- jquery - 使用 jquery 正则表达式从文本中提取 [+-] 小数
- java - G Maps Android Java,最后一个已知的位置标记颜色与位置标记不同,但在运行的应用程序上显示相同的标记颜色
- ajax - 未捕获的类型错误:无法在更改 HTMLSelectElement.onchange 时读取未定义的属性“pop”
- java - 启动相机android权限时崩溃
- laravel - 如何与这个 Laravel Eloquent 查询一起获得总和
- javascript - 元素未使用 jquery 中的每个循环定义