javascript
JavaScript闭包函数的理解与使用
要理解閉包,首先理解javascript特殊的變量作用域,變量的作用域無非就是兩種: 全局變量
局部變量
javascript語言的特殊處就是函數(shù)內(nèi)部可以讀取全局變量。
1.如何從外部讀取局部變量
我們有時候需要得到函數(shù)內(nèi)的局部變量,但是在正常情況下,這是不能讀取到的,只有通過變通方法才能讀取到。
在javascript語言中,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量,因此可以把閉包簡單理解成“定義在一個函數(shù)內(nèi)部的函數(shù)”。所以本質(zhì)上,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁。
2.閉包的概念
閉包是指有權(quán)訪問另一個函數(shù)作用域中變量的函數(shù),創(chuàng)建閉包的最常見的方式就是在一個函數(shù)內(nèi)創(chuàng)建另一個函數(shù),通過另一個函數(shù)訪問這個函數(shù)的局部變量,利用閉包可以突破作用鏈域,將函數(shù)內(nèi)部的變量和方法傳遞到外部。
3.閉包的特性
1).函數(shù)嵌套函數(shù)
2).內(nèi)部函數(shù)可以引用外層的參數(shù)和變量
3).參數(shù)和變量不會被垃圾回收機(jī)制回收
4.閉包的用途
1).閉包可以讀取函數(shù)內(nèi)部的變量
2).可以讓變量的值始終保持在內(nèi)存中,生命周期比較長
5.閉包的缺點(diǎn)
閉包不能濫用,否則會導(dǎo)致內(nèi)存泄露,影響網(wǎng)頁的性能。閉包使用完了后,要立即釋放資源,將引用變量指向null。
舉個小例子大家看一下
<script>function demo() {var a = 1;return function(b) {return (a++) + b;}}var b = demo()(1);console.log(b); </script> 復(fù)制代碼上述例子中:demo函數(shù)中的變量a,在下面匿名函數(shù)中是可以讀取的,所以console.log(b),打印出來的值是2。
轉(zhuǎn)載于:https://juejin.im/post/5b4feedb5188251aae3297ff
總結(jié)
以上是生活随笔為你收集整理的JavaScript闭包函数的理解与使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android--OkHttp理解系列(
- 下一篇: JavaScript中的数组和字符串