摘要:閉包中的閉包是一個我們經常遇到的名詞,到底什么是閉包為什么我們要使用閉包又該如何使用閉包呢為什么我們需要閉包首先來看一個例子,我們來實現一個計數器。如何使用閉包所以這時候我們就要用閉包去解決這個問題了,先看代碼。
閉包
JS中的閉包是一個我們經常遇到的名詞,到底什么是閉包?為什么我們要使用閉包?又該如何使用閉包呢?
為什么我們需要閉包首先來看一個例子,我們來實現一個計數器。
var counter = 0; function add() { return counter += 1; } add(); add(); add();// 計數器現在為 3
現在我們已經達到了目的,可是問題來了,代碼中的任何一個函數都可以隨意改變counter的值,所以這個計數器并不完美。那我們把counter放在add函數里面不就好了么?
function add() { var counter = 0; return counter += 1; } add(); add(); add();// 本意是想輸出 3, 但輸出的都是 1
所以這樣做的話,每次調用add函數,counter的值都要被初始化為0,還是達不到我們的目的。
如何使用閉包所以這時候我們就要用閉包去解決這個問題了,先看代碼。
var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); add();// 計數器為 3
這時候我們完美實現了計數器。這段非常精簡,可以拆分成如下等價代碼。
function outerFunction () { var counter = 0; function innerFunction (){ return counter += 1; } return innerFunction; } var add = outerFunction(); add(); add(); add();// 計數器為 3
這時候的add就形成了一個閉包。一個閉包由兩部分組成,函數和創建該函數的環境。環境是由環境中的局部變量組成的。對于閉包add來說,它由函數innerFunction和變量counter組成,所以這時候add是可以訪問變量counter的。
總結所以閉包的功能就是使一個函數能訪問另一個函數作用域中的變量。形成閉包之后,該變量不會被垃圾回收機制回收。
閉包的原理其實還是作用域。
使用閉包的優點是可以避免全局變量污染,缺點是容易造成內存泄露。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107382.html
摘要:到底什么是閉包這個問題在面試是時候經常都會被問,很多小白一聽就懵逼了,不知道如何回答好。上面這么說閉包是一種特殊的對象。閉包的注意事項通常,函數的作用域及其所有變量都會在函數執行結束后被銷毀。從而使用閉包模塊化代碼,減少全局變量的污染。 閉包,有人說它是一種設計理念,有人說所有的函數都是閉包。到底什么是閉包?這個問題在面試是時候經常都會被問,很多小白一聽就懵逼了,不知道如何回答好。這個...
摘要:閉包是什么這是一個在面試的過程中出現的概率為以上的問題,也是我們張口就來的問題。文章推薦我們面試中在被問到閉包這個問題是要注意的幾點閉包的延伸,讓面試變得 閉包是什么?這是一個在面試的過程中出現的概率為60%以上的問題,也是我們張口就來的問題。但是我們往往發現,在面試的過程中我們的回答并不那么讓面試官滿意,我們雖然能張口說出一些但是卻不能系統的對這個問題進行回答。面試官希望加入自己團隊...
摘要:大名鼎鼎的閉包面試必問。閉包的作用是什么。看到閉包在哪了嗎閉包到底是什么五年前,我也被這個問題困擾,于是去搜了并總結下來。關于閉包的謠言閉包會造成內存泄露錯。閉包里面的變量明明就是我們需要的變量,憑什么說是內存泄露這個謠言是如何來的因為。 本文為饑人谷講師方方原創文章,首發于 前端學習指南。 大名鼎鼎的閉包!面試必問。請用自己的話簡述 什么是「閉包」。 「閉包」的作用是什么。 首先...
摘要:什么是閉包閉包的優缺點閉包是的一大難點,也是它的特色。閉包的用途閉包可以用在許多地方。閉包會在父函數外部,改變父函數內部變量的值。 什么是閉包?閉包的優缺點? 閉包(closure)是javascript的一大難點,也是它的特色。很多高級應用都要依靠閉包來實現。 1、變量作用域 要理解閉包,首先要理解javascript的特殊的變量作用域。變量的作用域無非就兩種:全局變量和局部變量。...
摘要:為了更好的理解,在閱讀此文之前建議先閱讀上一篇進擊之詞法作用域與作用域鏈什么是閉包閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結構。在中函數構成閉包。 為了更好的理解,在閱讀此文之前建議先閱讀上一篇《進擊JavaScript之詞法作用域與作用域鏈》 1.什么是閉包 閉包的含義就是閉合,包起來,簡單的來說,就是一個具有封閉功能與包裹功能的結構。所謂的閉包就是...
閱讀 1917·2021-11-23 09:51
閱讀 1246·2019-08-30 15:55
閱讀 1613·2019-08-30 15:44
閱讀 759·2019-08-30 14:11
閱讀 1146·2019-08-30 14:10
閱讀 915·2019-08-30 13:52
閱讀 2630·2019-08-30 12:50
閱讀 615·2019-08-29 15:04