闭包
关于闭包这个问题,我已经反复接触过好多次了,有好次面试,都有被提问到,自己总是了解的不通透。这次针对几个问题做一下整理,避免自己后面又忘记了。
什么是闭包?
关于闭包 不同的权威上面有不同的定义,这里我就记录一下我理解比较深刻的一种定义。
闭包就是指内部函数总是可以访问其所在的外部函数中声明的变量和参数。
为什么说所有的js函数都可以称为闭包?
对于js函数而言,它都有一个隐藏属性[[Environment]],该隐藏属性可以引用该函数所被创建时的词法环境(也就是说可以访问函数所被创建时所在作用域的参数以及变量)
闭包都有哪些用途?
(1)当我们想要访问函数内的局部变量时,又不想将该结果暴露为全局作用域中时,就可以通过闭包将这个变量进行返回,从来达到保护该变量不被外界污染的目的。
function getName() {
let name = 'year'
return () => {
return name
}
}
console.log(getName()())
...今天就暂时先写这么多,准备下班了。