正在学习这一章节,看到这么一段话:
就想说自己也写个闭包试试看:
let len = 0; function foo() { len++; setTimeout(() => { len--; }, 1000); } foo();
然后在浏览器里打了断点,发现并没有出现所谓的闭包。
所以寻思着是不是作者错了,全局作用域中是没有闭包的?于是就去GitHub上的issue中找类似的问题,没想到还真有人提了。
链接:https://github.com/getify/You-Dont-Know-JS/issues/1321
正如作者所说,全局作用域闭包不是可明显观察到的,但是他认为所有的函数在其所在的封闭词法作用域中都是有闭包的,当然,包括全局函数。
以上,权当是mark一下吧。
虽然作者释疑了,但还是想知道是否有方法可以验证作者的说法,希望大家可以留言,提供帮助,谢谢!