2

关于标题总结了这个问题 - 这是代码示例:

!function() {
    console.log(this); // global object
}();

(function() {
    console.log(this); // global object
})();

() => {
    console.log(this); // {}
}();

var x = (function() {
    console.log(this); // global object
})();

箭头函数在幕后发生了什么?如果我想要 ES5 中的那个范围,据我所知,我必须将执行绑定到一个空对象,如下所示:

!function() {
    console.log(this); // global object
}.bind({})();
4

1 回答 1

5

这与 ES5 或 ES6 无关,箭头函数总是获取封闭函数的上下文。不使用的函数调用'use strict';总是获取全局对象作为上下文(例如浏览器中的窗口),使用时undefined默认为上下文。

这是一篇很好的文章,解释了这个话题:

https://rainsoft.io/gentle-explanation-of-this-in-javascript/

于 2016-07-23T07:58:28.653 回答