你真的了解闭包吗?

闭包(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 ·>>

发表回复

相关推荐

一葉落盞,傳承千年之美

築夢茶鄉 福地湄潭 湄江印象 隻為一杯好茶奇巧之器,不一定都來自於匠人的巧思,有時候,它會在偶然中誕生。千年前,一片桑...

· 8分钟前

2023除濕機推薦!傢用除濕機,閉坑+選購指南!附美的、小米等不同型號除濕機效果對比

如果你不註意防范,患上類風濕性關節炎的風險就會增加。傢裡衣物總是晾不幹,被子濕漉漉的,地板和墻面滿是水跡,空氣中還有...

· 9分钟前

氣門嘴老化危害大 小小氣門嘴隱藏爆胎高風險

一大早接到客戶劉先生的救援電話,原因是客戶早上上班倒車的時候發現倒不動,下車一看,右後方輪胎徹底扁下去瞭,於是撥打瞭...

· 10分钟前

剪絆舌(舌系帶矯正術),孩子該不該挨這一刀?

在中國,無論是綜合性醫院口腔科,公立口腔醫院,兒童醫院,婦幼保健院,還是民營口腔醫院,每年都會給大量的嬰幼兒剪"絆...

· 12分钟前

妙芯的五行罡步圖及金行位的站樁修煉

鏡心道長上節課講瞭靈魂矩陣的修煉方法,太一樁。這節課來講五行罡步圖及金行位的站樁修煉。上節課我們講瞭,我們需要把靈魂...

· 12分钟前