关于总结问题的标题 - 这是代码示例:
!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({})();
答案 0 :(得分:5)
它与ES5或ES6无关,箭头函数总是获得封闭函数的上下文。不使用'use strict';
的函数调用总是将全局对象作为上下文(例如浏览器中的窗口),使用时,默认情况下上下文为undefined
。
这是一篇非常好的文章,解释了这个主题:
https://rainsoft.io/gentle-explanation-of-this-in-javascript/