闭包(closure)是一个函数以及其捆绑的周边环境状态(lexical environment,词法环境)的引用的组合。换而言之,闭包让开发者可以从内部函数访问外部函数的作用域。在 JavaScript 中,闭包会随着函数的创建而被同时创建。
闭包很重要,因为它们控制特定函数能访问的作用域范围,以及在同一作用域范围内,同级函数之间共享哪些变量。无论是函数式还是面向对象的编程风格,能够正确理解变量和函数如何相互关联,对于预测代码的运行结果至关重要。
几乎所有的编程语言做的事情就是在运行过程不停地修改不同的变量值。问题是在一个庞大的程序中,如何准确找到要修改的变量。要回答这个问题,就需要了解词法作用域。
如果你将一个函数体看做一个范围,那么你可以说在这个函数内部定义的变量,只能在这个函数内部访问。
function A() {
let a = 1
console.log( a );
}
A(); // 1
console.log(a); // Error: Uncaught ReferenceError: a is not defined
<< · Back Index ·>>
上一篇
下一篇
如果你不註意防范,患上類風濕性關節炎的風險就會增加。傢裡衣物總是晾不幹,被子濕漉漉的,地板和墻面滿是水跡,空氣中還有...