【闭包】和【作用域链】到底是谁让函数中的变量可以访问外层作用域中的变量?
闭包是一种编程思想,按这种思想组织起来的代码叫闭包结构,跟编程语言无关。
在js的规范中有一个“词法环境”的概念,它解释了变量的可访问范围。所有实现了js的宿主(无论是浏览器,还是Node.js)都遵循了这个概念。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
6 回答2.3k 阅读
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
在js中,访问一个变量会优先在当前作用域中进行查找,如果当前作用域中没有找到,会沿着作用域链向上层作用域查找,直到顶层作用域(浏览器中就是window),如果顶层作用域也没有找到,会抛出变量未定义的错误。
而闭包是利用了这一概念,但本质上还是作用域链的原因