首页 >web前端 >js教程 >为什么'bind()”不能与 JavaScript 中的箭头函数一起使用?

为什么'bind()”不能与 JavaScript 中的箭头函数一起使用?

Susan Sarandon
Susan Sarandon原创
2024-12-08 22:39:11897浏览

Why Doesn't `bind()` Work with Arrow Functions in JavaScript?

箭头函数绑定:解释

在 JavaScript 中使用箭头函数时,开发人员可能会遇到有关“this”绑定的意外行为。与常规函数不同,箭头函数维护词法范围,这意味着它们继承定义它们的环境的“this”绑定。因此,不可能在箭头函数中重新绑定“this”。

考虑这个示例:

var f = () => console.log(this);
var o = {'a': 42};
var fBound = f.bind(o);
fBound();

在此代码片段中,我们尝试绑定箭头函数“f”使用“.bind()”方法连接到对象“o”。但是,当我们调用“fBound”时,它会输出全局“window”对象而不是“o”。

这是因为箭头函数从词法封闭环境继承了它们的“this”绑定,在本例中是这样的是全局执行上下文。因此,“f()”和“fBound()”始终引用全局“this”。

为避免此问题,建议在需要绑定时使用常规函数。这些函数创建一个新的执行上下文,允许您使用“.bind()”方法显式设置“this”绑定。

以上是为什么'bind()”不能与 JavaScript 中的箭头函数一起使用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn