成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS學(xué)習(xí)筆記(第7章)(函數(shù)表達(dá)式)

xiaokai / 2286人閱讀

摘要:遞歸閉包模仿塊級作用域私有變量小結(jié)在編程中,使用函數(shù)表達(dá)式可以無需對函數(shù)命名,從而實(shí)現(xiàn)動態(tài)編程。匿名函數(shù)也稱為拉姆達(dá)函數(shù)。函數(shù)聲明要求有名字,但函數(shù)表達(dá)式不需要。中的函數(shù)表達(dá)式和閉包都是極其有用的特性,利用它們可以實(shí)現(xiàn)很多功能。

1、遞歸 2、閉包 3、模仿塊級作用域 4、私有變量 5、小結(jié)

在JavaScript編程中,使用函數(shù)表達(dá)式可以無需對函數(shù)命名,從而實(shí)現(xiàn)動態(tài)編程。匿名函數(shù)也稱為拉姆達(dá)函數(shù)。
1、函數(shù)表達(dá)式的特點(diǎn):

(1)函數(shù)表達(dá)式不同于函數(shù)聲明。函數(shù)聲明要求有名字,但函數(shù)表達(dá)式不需要。沒有名字的函數(shù)表達(dá)式也叫做匿名函數(shù);

(2)在無法確定如何引用函數(shù)的情況下,遞歸函數(shù)就會變得比較復(fù)雜;

(3)遞歸函數(shù)應(yīng)該是中應(yīng)用arguements.callee來遞歸地調(diào)用自身,不要使用函數(shù)名,因?yàn)楹瘮?shù)名可能會發(fā)生變化;

2、當(dāng)在函數(shù)內(nèi)部定義了其他函數(shù)時,就創(chuàng)建了閉包。閉包有權(quán)訪問包含函數(shù)內(nèi)部的所有變量,原理如下:

(1)在后臺執(zhí)行環(huán)境中,閉包的作用域鏈包含著它自己的作用域、包含函數(shù)的作用域和全局作用域;

(2)通常,函數(shù)的作用域及其所有變量都會在函數(shù)執(zhí)行結(jié)束后被銷毀;

(3)但是,當(dāng)函數(shù)返回一個閉包時,這個函數(shù)的作用域?qū)恢痹趦?nèi)存中保存到閉包不存在為止;

3、使用閉包可以在JavaScript中模仿塊級作用域(JavaScript本身沒有塊級作用域的概念)

(1)創(chuàng)建并立即調(diào)用一個函數(shù),這樣既可以執(zhí)行其中的代碼,又不會再內(nèi)存中留下對該函數(shù)的引用;

(2)結(jié)果就是函數(shù)內(nèi)部的所有變量都會被立即銷毀——除非將某些變量賦值給了包含作用域(即外部作用域)中的變量;

4、閉包還可以用于在對象中創(chuàng)建私有變量,相關(guān)概念和要點(diǎn)如下:

(1)即使JavaScript中沒有正式的死有對象屬性的概念,但可以使用閉包來實(shí)現(xiàn)公有方法,而通過公有方法可以訪問在包含作用域中定義的變量;

(2)有權(quán)訪問私有變量的公有方法叫做特權(quán)方法;

(3)可以使用構(gòu)造函數(shù)模式、原型模式來實(shí)現(xiàn)自定義類型的特權(quán)方法,也可以使用模塊模式、增強(qiáng)的模塊模式來實(shí)現(xiàn)單例的特權(quán)方法。

JavaScript中的函數(shù)表達(dá)式和閉包都是極其有用的特性,利用它們可以實(shí)現(xiàn)很多功能。不過因?yàn)閯?chuàng)建閉包必須維護(hù)額外的作用域,所以過度使用它們可能會占用大量內(nèi)存。

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

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109085.html

相關(guān)文章

  • JS學(xué)習(xí)筆記5)(String類型)

    摘要:字符串大小寫轉(zhuǎn)換方法和則是針對特定地區(qū)的實(shí)現(xiàn)。可以基于指定的分隔符將一個字符串分割成多個子字符串,并將結(jié)果放在一個數(shù)組中將字符串轉(zhuǎn)換為數(shù)組。分隔符可以是字符串,也可以是一個對象。 1、對象創(chuàng)建 String類型是字符串的對象包裝類型,可以像下面這樣使用String構(gòu)造函數(shù)來創(chuàng)建。 var stringObject = new String(hello world); String對象...

    rose 評論0 收藏0
  • JS學(xué)習(xí)筆記6)(創(chuàng)建對象的7種模式)

    摘要:工廠模式?jīng)]有解決對象識別的問題即怎樣知道一個對象的類型構(gòu)造函數(shù)模式使用構(gòu)造函數(shù)的主要問題,就是每個方法都要在每個實(shí)例上重新創(chuàng)建一遍。創(chuàng)建要返回的對象可以在這里定義私有變量和函數(shù)添加函數(shù)注意寄生構(gòu)造函數(shù)中是返回對象注意寄生構(gòu)造函數(shù)中是 1、工廠模式 沒有解決對象識別的問題(即怎樣知道一個對象的類型) function createPerson(name, age, job) { ...

    Render 評論0 收藏0
  • 我的開源 GitBook: Python 之旅

    摘要:我在寫作的過程中,給自己提了一個要求盡量深入淺出,條理清晰。至于是否達(dá)到了,希望讀者們多多批評指正,并給我提意見和建議。第章介紹中的函數(shù)式編程,包括匿名函數(shù)閉包和裝飾器等。第章介紹使用處理進(jìn)程線程和協(xié)程。 showImg(https://segmentfault.com/img/remote/1460000007990784?w=268&h=385); 在學(xué)習(xí)和使用 Python 的過...

    趙連江 評論0 收藏0
  • JS學(xué)習(xí)筆記18)(JavaScript與XML)

    摘要:函數(shù)接收三個參數(shù)上下文節(jié)點(diǎn)表達(dá)式和可選的命名空間對象。命名空間對象應(yīng)該是下面這種字面量的形式。使用樣式表轉(zhuǎn)換文檔跨瀏覽器使用這個函數(shù)接收兩個參數(shù)要執(zhí)行轉(zhuǎn)換的上下文節(jié)點(diǎn)和文檔對象。 showImg(https://segmentfault.com/img/bVbvHVd?w=962&h=496); 本章主要講解了以下四個問題: 1、將XML解析為DOM文檔 跨瀏覽器把XML解析為DOM文...

    GT 評論0 收藏0
  • Java學(xué)習(xí)路線總結(jié),搬磚工逆襲Java架構(gòu)師(全網(wǎng)最強(qiáng))

    摘要:哪吒社區(qū)技能樹打卡打卡貼函數(shù)式接口簡介領(lǐng)域優(yōu)質(zhì)創(chuàng)作者哪吒公眾號作者架構(gòu)師奮斗者掃描主頁左側(cè)二維碼,加入群聊,一起學(xué)習(xí)一起進(jìn)步歡迎點(diǎn)贊收藏留言前情提要無意間聽到領(lǐng)導(dǎo)們的談話,現(xiàn)在公司的現(xiàn)狀是碼農(nóng)太多,但能獨(dú)立帶隊的人太少,簡而言之,不缺干 ? 哪吒社區(qū)Java技能樹打卡?【打卡貼 day2...

    Scorpion 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<