js閉包

閉包的定義

? ??閉包就是能夠讀取其他函數(shù)內部變量的函數(shù)

閉包的特性

? ? 封閉性:外界無法訪問閉包內部的數(shù)據(jù),如果在閉包內聲明變量,外界是無法訪問的,除非閉包主動向外界提供訪問接口;

????持久性:一般的函數(shù),調用完畢之后,系統(tǒng)自動注銷函數(shù),而對于閉包來說,在外部函數(shù)被調用之后,閉包結構依然保存在。

閉包的優(yōu)缺點

????缺點:由于閉包攜帶包含它函數(shù)的作用域,因此比其他函數(shù)占用的內存更多。

????優(yōu)點:減少創(chuàng)建全局變量 減少傳遞給函數(shù)的參數(shù)量 封閉性

閉包有如下應用特征:

? ????1.局部變量:在函數(shù)中定義有共享意義的局部變量(定義成全局變量會造成全局污染);

?????2.內嵌函數(shù):在函數(shù)中申明有內嵌函數(shù),內嵌函數(shù)對函數(shù)中的局部變量進行訪問;

?????3.外部使用:函數(shù)向外返回此內嵌函數(shù),外部可通過此內嵌函數(shù)持有并訪問申明在函數(shù)中的局部變量,而此變量在外部是通過其他路徑無法訪問的;

閉包的結構

? ? function a(){

? ? ? ? var value = 1; // 局部變量

? ? ? ? function b(){? //內嵌函數(shù)

? ? ? ? ? ? alert(value?);

????????}

? ? ? ? return b;? // 返回內嵌函數(shù)

????}

? ? var c = a();

? ? c(); // 外部使用

? ? 根據(jù)定義a函數(shù)里面的b函數(shù)叫閉包,但是要獲取到這個b函數(shù) 就必須在a函數(shù)里面返回b函數(shù)。

? ? 上面c函數(shù)指向的就是這個b函數(shù)。

? ? 調用c函數(shù)就可以彈出a函數(shù)里面的局部變量value的值。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 閉包: 官方”的解釋是:閉包是一個擁有許多變量和綁定了這些變量的環(huán)境的表達式(通常是一個函數(shù)),因而這些變量也是該...
    小裁縫sun閱讀 711評論 0 5
  • 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現(xiàn)。 一、變量...
    zock閱讀 1,119評論 2 6
  • 一、閉包是什么? ??閉包(closure)就是能夠讀取其他函數(shù)內部變量的函數(shù)。在javascript中,只有函數(shù)...
    懿左左閱讀 721評論 0 6
  • JavaScript 變量可以是局部變量或全局變量。私有變量可以用到閉包。 簡單點說閉包就是JS中用來實現(xiàn)私有變量...
    wfmm1990閱讀 591評論 0 0
  • 昨天打卡時的一個小發(fā)現(xiàn)。 ios一般“拍照”和“選圖片”是分開的,簡書卻合在了一起。 也許是怕ios用戶水土不服,...
    P_Simona閱讀 334評論 5 0

友情鏈接更多精彩內容