全局函数是否存在闭包?

正在学习这一章节,看到这么一段话:

就想说自己也写个闭包试试看:

let len = 0;
function foo() {
    len++;
    setTimeout(() => {
       len--;
    }, 1000);
}
foo();

  

然后在浏览器里打了断点,发现并没有出现所谓的闭包。

所以寻思着是不是作者错了,全局作用域中是没有闭包的?于是就去GitHub上的issue中找类似的问题,没想到还真有人提了。

链接:https://github.com/getify/You-Dont-Know-JS/issues/1321

正如作者所说,全局作用域闭包不是可明显观察到的,但是他认为所有的函数在其所在的封闭词法作用域中都是有闭包的,当然,包括全局函数。

以上,权当是mark一下吧。

虽然作者释疑了,但还是想知道是否有方法可以验证作者的说法,希望大家可以留言,提供帮助,谢谢!

原文地址:https://www.cnblogs.com/lwl0812/p/10313910.html