image.png
閉包
關于閉包這個問題,我已經反復接觸過好多次了,有好次面試,都有被提問到,自己總是了解的不通透。這次針對幾個問題做一下整理,避免自己后面又忘記了。
什么是閉包?
關于閉包 不同的權威上面有不同的定義,這里我就記錄一下我理解比較深刻的一種定義。
閉包就是指內部函數總是可以訪問其所在的外部函數中聲明的變量和參數。
為什么說所有的js函數都可以稱為閉包?
對于js函數而言,它都有一個隱藏屬性[[Environment]],該隱藏屬性可以引用該函數所被創建時的詞法環境(也就是說可以訪問函數所被創建時所在作用域的參數以及變量)
閉包都有哪些用途?
(1)當我們想要訪問函數內的局部變量時,又不想將該結果暴露為全局作用域中時,就可以通過閉包將這個變量進行返回,從來達到保護該變量不被外界污染的目的。
function getName() {
let name = 'year'
return () => {
return name
}
}
console.log(getName()())
...今天就暫時先寫這么多,準備下班了。