最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript匿名函數(shù)之模仿塊級(jí)作用域

 更新時(shí)間:2015年12月12日 09:28:24   作者:tianxintian22  
這篇文章主要介紹了JavaScript匿名函數(shù)之模仿塊級(jí)作用域的相關(guān)資料,需要的朋友可以參考下

匿名函數(shù)

函數(shù)是JavaScript中最靈活的一種對(duì)象,這里只是講解其匿名函數(shù)的用途。

匿名函數(shù):就是沒(méi)有函數(shù)名的函數(shù)。

函數(shù)的定義,首先簡(jiǎn)單介紹一下函數(shù)的定義,大致可分為三種方式

第一種:這也是最常規(guī)的一種

function double(x){
  return 2 * x;  
}

 第二種:這種方法使用了Function構(gòu)造函數(shù),把參數(shù)列表和函數(shù)體都作為字符串,很不方便,不建議使用。

var double = new Function('x', 'return 2 * x;');

 第三種:

var double = function(x) { return 2* x; }

 注意“=”右邊的函數(shù)就是一個(gè)匿名函數(shù),創(chuàng)造完畢函數(shù)后,又將該函數(shù)賦給了變量square。

JavaScript中是沒(méi)有塊級(jí)作用域概念的。也就是說(shuō),在塊級(jí)語(yǔ)句中定義的變量,實(shí)際上是在包含函數(shù)中(外部函數(shù))而非語(yǔ)句中創(chuàng)建的。

function outputNumber(count){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  } 
  alert(i);  //count 
} 

該函數(shù)在java、C#等語(yǔ)言中,變量i只會(huì)在for循環(huán)語(yǔ)句中有定義,循環(huán)結(jié)束,i也就被銷毀了。但在JavaScript中,變量i是定義在outputNumber()活動(dòng)對(duì)象中的,因此在它定義開(kāi)始,就可以在函數(shù)內(nèi)部訪問(wèn)它。即使重新聲明同一個(gè)變量,也不會(huì)改變它的值。

function outputNumber(count){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  } 
  var i;   //重新聲明變量 
  alert(i);  //count 
} 

匿名函數(shù)可以用來(lái)模仿塊級(jí)作用域并避免這個(gè)問(wèn)題,用作塊級(jí)作用域(也稱私有作用域)的匿名函數(shù)的語(yǔ)法如下:

(function(){ 
   //這是塊級(jí)作用域 
})() 

以上代碼定義變調(diào)用了一個(gè)匿名函數(shù),將函數(shù)聲明包含在一個(gè)小括號(hào)里面,表示它是個(gè)函數(shù)表達(dá)式。緊跟其后的另一對(duì)小括號(hào)會(huì)立即調(diào)用這個(gè)函數(shù)。
無(wú)論什么時(shí)候,只要臨時(shí)需要一些變量,就可以用私用作用域,例如:

function outputNumber(count){ 
  (function(){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  })(); 
  alert(i);  //導(dǎo)致一個(gè)錯(cuò)誤 
} 

這樣,我們?cè)趂or循環(huán)外部插入了一個(gè)私有作用域。在匿名函數(shù)中定義的任何變量,都會(huì)在執(zhí)行結(jié)束時(shí)被銷毀。

這種技術(shù)經(jīng)常在全局作用域中被用在函數(shù)外部,從而限制向全局作用域中添加過(guò)多的變量和函數(shù)。

一般來(lái)說(shuō),我們應(yīng)該盡量減少向全局作用域中添加變量和函數(shù)。

這種做法可以減少閉包占用內(nèi)存的問(wèn)題,因?yàn)闆](méi)有指向匿名函數(shù)的引用,只要函數(shù)執(zhí)行完畢,就可以立即銷毀其作用域鏈。

相關(guān)文章

  • uni.getLocation和wx.getLocation方法調(diào)用無(wú)效也不返回失敗的解決方案

    uni.getLocation和wx.getLocation方法調(diào)用無(wú)效也不返回失敗的解決方案

    這篇文章主要給大家介紹了關(guān)于uni.getLocation和wx.getLocation方法調(diào)用無(wú)效也不返回失敗的解決方案,文中通過(guò)實(shí)例代碼以及圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • 小程序識(shí)別身份證,銀行卡,營(yíng)業(yè)執(zhí)照,駕照的實(shí)現(xiàn)

    小程序識(shí)別身份證,銀行卡,營(yíng)業(yè)執(zhí)照,駕照的實(shí)現(xiàn)

    這篇文章主要介紹了小程序識(shí)別身份證,銀行卡,營(yíng)業(yè)執(zhí)照,駕照的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 詳解微信小程序之提高應(yīng)用速度小技巧

    詳解微信小程序之提高應(yīng)用速度小技巧

    這篇文章主要介紹了詳解微信小程序之提高應(yīng)用速度小技巧,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • SVG快速構(gòu)建馬賽克效果

    SVG快速構(gòu)建馬賽克效果

    這篇文章主要為大家介紹了SVG快速構(gòu)建馬賽克效果示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 詳談commonjs模塊與es6模塊的區(qū)別

    詳談commonjs模塊與es6模塊的區(qū)別

    下面小編就為大家?guī)?lái)一篇詳談commonjs模塊與es6模塊的區(qū)別。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 微信小程序分包加載的實(shí)現(xiàn)代碼

    微信小程序分包加載的實(shí)現(xiàn)代碼

    分包加載是一種小程序優(yōu)化技術(shù),將小程序不同功能的代碼,分別打包成不同的子包,在構(gòu)建時(shí)打包成不同的分包,用戶在使用時(shí)按需進(jìn)行加載,在構(gòu)建小程序分包項(xiàng)目時(shí),構(gòu)建會(huì)輸出一個(gè)或多個(gè)分包,這篇文章主要介紹了微信小程序---分包加載,需要的朋友可以參考下
    2024-07-07
  • javascript正則表達(dá)式中分組詳解

    javascript正則表達(dá)式中分組詳解

    這篇文章主要介紹了javascript正則表達(dá)式中分組的相關(guān)資料,包括捕獲性分組和非捕獲性分組,需要的朋友可以參考下
    2016-07-07
  • JS中URL.createObjectURL使用示例講解

    JS中URL.createObjectURL使用示例講解

    URL.createObjectURL()方法會(huì)根據(jù)傳入的參數(shù)創(chuàng)建一個(gè)指向該參數(shù)對(duì)象的URL. 這個(gè)URL的生命僅存在于它被創(chuàng)建的這個(gè)文檔里. 新的對(duì)象URL指向執(zhí)行的File對(duì)象或者是Blob對(duì)象,這篇文章主要給大家介紹了關(guān)于JS中URL.createObjectURL使用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • JS實(shí)現(xiàn)的幻燈片切換顯示效果

    JS實(shí)現(xiàn)的幻燈片切換顯示效果

    這篇文章主要介紹了JS實(shí)現(xiàn)的幻燈片切換顯示效果,涉及javascript通過(guò)擴(kuò)展實(shí)現(xiàn)針對(duì)頁(yè)面元素的動(dòng)態(tài)切換操作相關(guān)技巧,需要的朋友可以參考下
    2016-09-09
  • JavaScript獲取DOM元素的多種方法

    JavaScript獲取DOM元素的多種方法

    DOM是 HTML 和 XML 文檔的編程接口,表現(xiàn)為網(wǎng)頁(yè)結(jié)構(gòu)的樹(shù)狀對(duì)象,每個(gè)對(duì)象對(duì)應(yīng)頁(yè)面的一部分,如 HTML 元素,獲取 DOM 元素是交互式網(wǎng)頁(yè)開(kāi)發(fā)的核心,用于修改內(nèi)容、樣式或行為,本文給大家介紹了JavaScript獲取DOM元素的多種方法,需要的朋友可以參考下
    2025-03-03

最新評(píng)論

陆丰市| 古交市| 双辽市| 晋宁县| 荃湾区| 赣榆县| 驻马店市| 澄城县| 五河县| 仁怀市| 太仆寺旗| 托里县| 邵阳县| 长沙县| 扶沟县| 海伦市| 乌拉特中旗| 墨竹工卡县| 涪陵区| 烟台市| 堆龙德庆县| 麦盖提县| 南川市| 吉林省| 邯郸市| 德格县| 馆陶县| 通城县| 民和| 建昌县| 应城市| 龙江县| 荣昌县| 原阳县| 盐亭县| 霍山县| 仙游县| 乌拉特前旗| 宁国市| 卢龙县| 巴青县|