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