2021-9-17 前端達(dá)人
- JavaScript是函數(shù)級(jí)作用域編程語(yǔ)言:變量只在其定義時(shí)所在的function內(nèi)部有意義。
- 如果不將變量定義在任何函數(shù)的內(nèi)部,此時(shí)這個(gè)變量就是全局變量,它在任何函數(shù)內(nèi)都可以被訪問(wèn)和更改。
- 如果函數(shù)中也定義了和全局同名的變量,則函數(shù)內(nèi)的變量會(huì)將全局的變量“遮蔽”。
- 這個(gè)程序的運(yùn)行結(jié)果是什么呢?
- 這個(gè)程序的運(yùn)行結(jié)果是什么呢?
- 先來(lái)認(rèn)識(shí)函數(shù)的嵌套:一個(gè)函數(shù)內(nèi)部也可以定義一個(gè)函數(shù)。和局部變量類似,定義在一個(gè)函數(shù)內(nèi)部的函數(shù)是局部函數(shù)。
- 在函數(shù)嵌套中,變量會(huì)從內(nèi)到外逐層尋找它的定義。
- 在初次給變量賦值時(shí),如果沒(méi)有加var,則將定義全局變量。
- JavaScript中函數(shù)會(huì)產(chǎn)生閉包(closure)。閉包是函數(shù)本身和該函數(shù)聲明時(shí)所處的環(huán)境狀態(tài)的組合。
- 函數(shù)能夠“記憶住”其定義時(shí)所處的環(huán)境,即使函數(shù)不在其定義的環(huán)境中被調(diào)用,也能訪問(wèn)定義時(shí)所處環(huán)境的變量。
- 在JavaScript中,每次創(chuàng)建函數(shù)時(shí)都會(huì)創(chuàng)建閉包。
- 但是,閉包特性往往需要將函數(shù)“換一個(gè)地方”執(zhí)行,才能被觀察出來(lái)。
- 閉包很有用,因?yàn)樗试S我們將數(shù)據(jù)與操作該數(shù)據(jù)的函數(shù)關(guān)聯(lián)起來(lái)。這與“面向?qū)ο缶幊獭庇猩僭S相似之處。
- 閉包的功能:記憶性、模擬私有變量。
- 當(dāng)閉包產(chǎn)生時(shí),函數(shù)所處環(huán)境的狀態(tài)會(huì)始終保持在內(nèi)存中,不會(huì)在外層函數(shù)調(diào)用后被自動(dòng)清除。這就是閉包的記憶性。
- 創(chuàng)建體溫檢測(cè)函數(shù)checkTemp(n),可以檢查體溫n是否正常,函數(shù)會(huì)返回布爾值。
- 但是,不同的小區(qū)有不同的體溫檢測(cè)標(biāo)準(zhǔn),比如A小區(qū)體溫合格線是37.1℃,而B小區(qū)體溫合格線是37.3℃,應(yīng)該怎么編程呢?
- 題目:請(qǐng)定義一個(gè)變量a,要求是能保證這個(gè)a只能被進(jìn)行指定操作(如加1、乘2),而不能進(jìn)行其他操作,應(yīng)該怎么編程呢?
- 不能濫用閉包,否則會(huì)造成網(wǎng)頁(yè)的性能問(wèn)題,嚴(yán)重時(shí)可能導(dǎo)致內(nèi)存泄露。
- 所謂內(nèi)存泄漏是指程序中己動(dòng)態(tài)分配的內(nèi)存由于某種原因未釋放或無(wú)法釋放。
- IIFE(Immediately Invoked Function Expression,立即調(diào)用函數(shù)表達(dá)式)是一種特殊的JavaScript函數(shù)寫法,一旦被定義,就立即被調(diào)用。
- 函數(shù)不能直接加圓括號(hào)被調(diào)用。
- 函數(shù)必須轉(zhuǎn)為“函數(shù)表達(dá)式”才能被調(diào)用。
- 為變量賦值:當(dāng)給變量賦值需要一些較為復(fù)雜的計(jì)算時(shí)(如if語(yǔ)句),使用IIFE顯得語(yǔ)法更緊湊。
- IIFE可以在一些場(chǎng)合(如for循環(huán)中)將全局變量變?yōu)榫植孔兞浚Z(yǔ)法顯得緊湊。
分享此文一切功德,皆悉回向給文章原作者及眾讀者.
轉(zhuǎn)自:csdn
免責(zé)聲明:藍(lán)藍(lán)設(shè)計(jì)尊重原作者,文章的版權(quán)歸原作者。如涉及版權(quán)問(wèn)題,請(qǐng)及時(shí)與我們?nèi)〉寐?lián)系,我們立即更正或刪除。
藍(lán)藍(lán)設(shè)計(jì)( www.yvirxh.cn )是一家專注而深入的界面設(shè)計(jì)公司,為期望卓越的國(guó)內(nèi)外企業(yè)提供卓越的UI界面設(shè)計(jì)、BS界面設(shè)計(jì) 、 cs界面設(shè)計(jì) 、 ipad界面設(shè)計(jì) 、 包裝設(shè)計(jì) 、 圖標(biāo)定制 、 用戶體驗(yàn) 、交互設(shè)計(jì)、 網(wǎng)站建設(shè) 、平面設(shè)計(jì)服務(wù)
藍(lán)藍(lán)設(shè)計(jì)的小編 http://www.yvirxh.cn