閉包是什麼?怎麼形成一個閉包?為什麼使用閉包?
在很多情況下我們會遇到閉包這個問題,也有很多人不太理解閉包以及閉包的形成,下面就給大家簡單說下閉包。
首先說什麼是閉包,閉包就是 有權訪問另一個函式作用域變數的函式都是閉包,讓我們舉個例子
在我們寫程式碼的時候遇到一個函式,這是正常函式的寫法:
function a( ){
var n=0;
function b( ){
n++;
console.log(n);
}
b( );
}
a( );
而用閉包的寫法是:
function a(){
var n=0;
function b(){
n++;
console.log(n)
}
return b;
}
var c=a();
c();
//此時就是讓c等於整個函式a( );而函式a裡的返回值是b,但沒有輸出,只是return出來了而已;
//然後再呼叫函式c( ),意思就是觸發函式c呼叫b的值然後輸出出來值。
這就是怎麼形成一個閉包的寫法。這裡的c函式訪問了建構函式a裡的變數,所以形成了一個閉包。
為什麼使用閉包?
我們知道,JS的每個函式都是獨立的,可以獲取外界資訊,但是外界卻無法直接看到裡面的內容,
我們將變數n放在了函式裡,除了b函式之外,沒有其他的辦法可以接觸到變數n,而且在函式a外定義
同名的變數n也不會受到影響,這就是所謂的“封裝性”
而之所以使用return 返回函式,是因為在函式a外無法直接呼叫b函式
所以return出去相關文章
- 什麼是閉包?閉包的作用是什麼?
- 什麼是閉包
- 閉包是什麼?
- 什麼是閉包?
- Python中什麼是閉包?閉包的好處是什麼?Python
- 什麼是閉包,閉包的優缺點?
- 什麼是閉包陷阱?
- [JS]什麼是閉包?JS
- 什麼是閉包?舉個例子
- javascript中閉包是什麼JavaScript
- 為什麼js會有閉包JS
- 什麼是過時閉包及如何解決過時閉包的坑
- 什麼是閉包?有哪些使用場景?優缺點是什麼?
- [Python小記] 通俗的理解閉包 閉包能幫我們做什麼?Python
- javaScript面試題整理 --- 什麼是閉包,什麼是立即執行函式,它的作用是什麼?簡單說一下閉包的使用場景JavaScript面試題函式
- 面試官問我:什麼是JavaScript閉包,我該如何回答面試JavaScript
- 閉包
- Swift-逃逸閉包、自動閉包Swift
- 閉包 | 淺談JavaScript閉包問題JavaScript
- js閉包及閉包的經典使用場景JS
- 閉包,是真的美
- 【集合論】關係閉包 ( 關係閉包求法 | 關係圖求閉包 | 關係矩陣求閉包 | 閉包運算與關係性質 | 閉包複合運算 )矩陣
- 草根學Python(十五) 閉包(解決一個需求瞭解閉包流程)Python
- Go | 閉包的使用Go
- JavaScript - 閉包JavaScript
- JavaScript 閉包JavaScript
- Golang閉包Golang
- 理解“閉包”
- PHP 閉包PHP
- JavaScript閉包JavaScript
- Swift 閉包Swift
- golang 閉包Golang
- 「閉包」攻略
- 閉包詳解一
- go 學習筆記之僅僅需要一個示例就能講清楚什麼閉包Go筆記
- [JavaScript閉包]Javascript閉包的判別,作用和示例JavaScript
- 閉包的錯誤使用
- Groovy閉包理解