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

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

Susan Sarandon
发布: 2024-12-08 22:39:11
原创
905 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板