国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JS之閉包及其作用

junnplus / 2596人閱讀

摘要:如上述代碼所顯示,閉包是需要函數(shù)套函數(shù),其實(shí)只是因?yàn)槲覀冃枰植孔兞浚駝t此變量就會(huì)變成全局變量,無(wú)法隱藏。閉包的作用可以間接調(diào)用函數(shù)內(nèi)部的局部變量。

前言

閉包作為JS中的一大難點(diǎn),相信許多小伙伴也常常為此疑惑,閉包到底是什么?它有什么用呢?

變量作用域

在學(xué)習(xí)閉包之前,你必須清楚知道JS中變量的作用域。
JS中變量的作用域無(wú)非就全局變量和局部變量,兩者之間的關(guān)系是函數(shù)內(nèi)部可以直接訪問(wèn)全局變量,但是函數(shù)外部是無(wú)法讀取函數(shù)內(nèi)部的局部變量的。

閉包的誕生

在很多時(shí)候,我們想要獲取函數(shù)的局部變量,但是上述我們已經(jīng)說(shuō)過(guò)了,正常情況下,這是沒(méi)辦法的,于是,閉包就誕生了。

!function(){
    var n = 1
    function f2(){
        alert(n)//1
    }
}

上述代碼就是一個(gè)閉包。函數(shù)f2被一個(gè)立即執(zhí)行函數(shù)所包裹起來(lái)了,這時(shí)候這個(gè)立即執(zhí)行函數(shù)中的所有局部變量對(duì)f2而言都是可訪問(wèn)的,所以才可以alert出n為1,但是反過(guò)來(lái)f2中如果有局部變量,立即執(zhí)行函數(shù)是訪問(wèn)不到的。
這就是Javascript語(yǔ)言特有的"鏈?zhǔn)阶饔糜?結(jié)構(gòu)(chain scope):子對(duì)象會(huì)一級(jí)一級(jí)地向上尋找所有父對(duì)象的變量。所以,父對(duì)象的所有變量,對(duì)子對(duì)象都是可見(jiàn)的,反之則不成立。

值得注意的是,很多人聽(tīng)說(shuō)閉包是需要函數(shù)套函數(shù),然后 return 一個(gè)函數(shù)。

function foo(){
  var local = 1
  function bar(){
    local++
    return local
  }
  return bar
}

var func = foo()
func()

如上述代碼所顯示,閉包是需要函數(shù)套函數(shù),其實(shí)只是因?yàn)槲覀冃枰植孔兞浚駝t此變量就會(huì)變成全局變量,無(wú)法隱藏。而return 一個(gè)函數(shù),只是因?yàn)樽屚獠磕苁褂眠@個(gè)閉包,也就是上述的bar函數(shù)。

閉包的定義

說(shuō)了這么多,閉包到底是什么?閉包其實(shí)就是「函數(shù)」和「函數(shù)內(nèi)部能訪問(wèn)到的變量」(也叫環(huán)境)的總和。

閉包的作用

1.可以間接調(diào)用函數(shù)內(nèi)部的局部變量。
2.可以讓這些變量的值始終保持在內(nèi)存中。(因此要注意不能濫用閉包)
3.可以暫存數(shù)據(jù),給變量開(kāi)辟私密空間,避免外部污染。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/106513.html

相關(guān)文章

  • JavaScript閉包(三)

    摘要:目錄執(zhí)行環(huán)境與作用域鏈立即執(zhí)行函數(shù)閉包知識(shí)點(diǎn)什么是閉包使用閉包的意義與注意點(diǎn)閉包的具體應(yīng)用小結(jié)這是基本語(yǔ)法的函數(shù)部分的第篇文章,主要講述了中比較重要的知識(shí)點(diǎn)閉包在講閉包之前,在上一篇函數(shù)二的基礎(chǔ)上,進(jìn)一步深化執(zhí)行環(huán)境和作用域鏈的知識(shí)點(diǎn),并補(bǔ) 目錄 1.執(zhí)行環(huán)境與作用域鏈 2. 立即執(zhí)行函數(shù) 3. 閉包知識(shí)點(diǎn) 3.1 什么是閉包 3.2 使用閉包的意義與注意點(diǎn) 3.3 閉包的具體應(yīng)用 4...

    Anonymous1 評(píng)論0 收藏0
  • 閉包及其應(yīng)用

    摘要:閉包帶來(lái)的問(wèn)題內(nèi)存占用由于閉包使用其它函數(shù)內(nèi)的變量,所以垃圾回收機(jī)制不會(huì)對(duì)閉包相關(guān)的函數(shù)進(jìn)行回收,占用內(nèi)存空間。 什么是閉包? 在函數(shù)內(nèi)使用其它函數(shù)內(nèi)的變量,是為閉包 【例1】 function a() { let num = 100; return function b() { console.log(num) } } var c = a() ...

    alexnevsky 評(píng)論0 收藏0
  • 【進(jìn)階2-1期】深入淺出圖解作用域鏈和閉包

    摘要:本期推薦文章從作用域鏈談閉包,由于微信不能訪問(wèn)外鏈,點(diǎn)擊閱讀原文就可以啦。推薦理由這是一篇譯文,深入淺出圖解作用域鏈,一步步深入介紹閉包。作用域鏈的頂端是全局對(duì)象,在全局環(huán)境中定義的變量就會(huì)綁定到全局對(duì)象中。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周開(kāi)始前端進(jìn)階的第二期,本周的主題是作用域閉包,今天是第6天。 本...

    levius 評(píng)論0 收藏0
  • 關(guān)于js閉包

    摘要:在作用域鏈中,外部函數(shù)的活動(dòng)對(duì)象始終處于第二位,外部函數(shù)的外部函數(shù)的活動(dòng)對(duì)象處于第三位,直到作用域鏈終點(diǎn)即全局執(zhí)行環(huán)境。更為重要的是函數(shù)在執(zhí)行完畢后,其他活動(dòng)對(duì)象也不會(huì)被銷毀,因?yàn)槟涿瘮?shù)的作用域鏈仍然在引用這個(gè)活動(dòng)對(duì)象。 原文鏈接----請(qǐng)點(diǎn)這里 ??閉包是指有權(quán)訪問(wèn)另一個(gè)函數(shù)作用域中的變量的函數(shù),創(chuàng)建閉包的常見(jiàn)方式,就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù)。 ??之所以一個(gè)內(nèi)部的函數(shù)可以...

    livem 評(píng)論0 收藏0
  • 作用域鏈、垃圾回收機(jī)制、閉包及其應(yīng)用(oop)

    摘要:執(zhí)行環(huán)境變量對(duì)象活動(dòng)對(duì)象作用域鏈執(zhí)行環(huán)境,為簡(jiǎn)單起見(jiàn),有時(shí)也稱為環(huán)境是中最為重要的一個(gè)概念。作用域鏈的用途,是保證對(duì)執(zhí)行環(huán)境有權(quán)訪問(wèn)的所有變量和函數(shù)的有序訪問(wèn)。閉包垃圾回收機(jī)制先介紹下垃圾回收機(jī)制。 執(zhí)行環(huán)境、變量對(duì)象 / 活動(dòng)對(duì)象、作用域鏈 執(zhí)行環(huán)境(executioncontext,為簡(jiǎn)單起見(jiàn),有時(shí)也稱為環(huán)境)是JavaScript中最為重要的一個(gè)概念。執(zhí)行環(huán)境定義了變量或函數(shù)有...

    EastWoodYang 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<