js闭包
首先需要阐明的就是,闭包会把一些变量值永久的存储在内存中,这些变量不会随着函数的执行结束而销毁掉。我们可以通过闭包去访问这些函数内部变量的值,这也是闭包的特点。
闭包就是一种延缓垃圾回收的机制,一般一个函数执行完函数内部的变量会跟着销毁掉,但是有时候你还需要这个变量,为了不让这个变量被销毁掉,只要让这个变量有引用存在就行。
其它答案里面各种解释都是细枝末节,举的各种例子,还有闭包的样子都是这个原因导致的结果而已。
是在JavaScript中,我们却可以在函数返回之后,依旧能使用其local变量!上面的例子已经很好的说明了, text
其实是函数sayHello2
的local变量,但是我们却在它return了之后,依旧能访问到它。正是通过函数闭包,才达到了上面的目的。
闭包的两个最主要的用处:
- 可以在函数外部读取函数内部的变量
- 可以将这些变量的值在内存中持久化