这里是一个例子:
function main () {
return () => {
console.log(42);
};
}
main()();
如果我们在带有控制台日志语句的行上放置一个断点,并在DevTools的this
面板上检查Scope
的值,我们可以看到:
但是,如果我们在日志记录语句中添加this
作为第二个参数,则会看到一些不同的图片:
人们总是假设this
是由箭头函数从外部词法环境中借用的。
由于我们以非严格模式运行代码,因此this
函数的main
的值应始终等于Window
。
也有类似的问题(this one和that one),但是它们都使用转译的代码来描述问题,而在我们的例子中是纯JavaScript。
因此,逻辑上的问题-这是DevTools的问题,还是设计使然?