對(duì)于前端人員面試,出現(xiàn)頻率最多也是讓人最頭疼的就是面試官說:“請(qǐng)簡(jiǎn)單談一談你對(duì)閉包的理解”。對(duì)于這一個(gè)幾乎快被人問爛的問題,屢屢出現(xiàn)在我們面試或被面試的過程中的原因很簡(jiǎn)單--我們一直都在接觸閉包,卻很少去正確地對(duì)待它。
因?yàn)殚]包是因?yàn)镴S的一些語(yǔ)言特性而形成的,所以在談它之前我們首先要了解一下的知識(shí)點(diǎn)
1.執(zhí)行上下文
2.作用域
3.垃圾回收機(jī)制
4.函數(shù)嵌套
本文只會(huì)簡(jiǎn)單的談涉及到的內(nèi)容,如果知識(shí)點(diǎn)有遺漏的同學(xué)可以自行g(shù)oogle,接下來讓我們進(jìn)入正題!
1. 什么是閉包?
關(guān)于什么是閉包讓我們先看看《高級(jí)程序設(shè)計(jì)》和《JavaScript權(quán)威指南》中的說法:
《高程》: 閉包是指有權(quán)訪問另一個(gè)函數(shù)作用域中的變量的函數(shù),創(chuàng)建閉包的常見方式,就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)。