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

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

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

匿名函數(shù)

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

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

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

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

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

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

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

 第三種:

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

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

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

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

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

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

匿名函數(shù)可以用來模仿塊級作用域并避免這個問題,用作塊級作用域(也稱私有作用域)的匿名函數(shù)的語法如下:

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

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

function outputNumber(count){ 
  (function(){ 
  for(var i=0;i<1000;i++){ 
    alert(i); 
  })(); 
  alert(i);  //導致一個錯誤 
} 

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

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

一般來說,我們應該盡量減少向全局作用域中添加變量和函數(shù)。

這種做法可以減少閉包占用內存的問題,因為沒有指向匿名函數(shù)的引用,只要函數(shù)執(zhí)行完畢,就可以立即銷毀其作用域鏈。

相關文章

  • uni.getLocation和wx.getLocation方法調用無效也不返回失敗的解決方案

    uni.getLocation和wx.getLocation方法調用無效也不返回失敗的解決方案

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

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

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

    詳解微信小程序之提高應用速度小技巧

    這篇文章主要介紹了詳解微信小程序之提高應用速度小技巧,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-01-01
  • SVG快速構建馬賽克效果

    SVG快速構建馬賽克效果

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

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

    下面小編就為大家?guī)硪黄斦刢ommonjs模塊與es6模塊的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-10-10
  • 微信小程序分包加載的實現(xiàn)代碼

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

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

    javascript正則表達式中分組詳解

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

    JS中URL.createObjectURL使用示例講解

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

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

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

    JavaScript獲取DOM元素的多種方法

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

最新評論

将乐县| 连平县| 汝南县| 健康| 阿拉善盟| 彰化市| 峡江县| 和龙市| 宜都市| 神农架林区| 肇东市| 香港 | 时尚| 托克逊县| 宁蒗| 当雄县| 华蓥市| 济阳县| 南靖县| 荣成市| 东城区| 和顺县| 甘孜县| 沭阳县| 都兰县| 自贡市| 绥棱县| 广元市| 翼城县| 临沧市| 南陵县| 邵东县| 轮台县| 凤台县| 永登县| 丹江口市| 顺义区| 弋阳县| 洪江市| 伽师县| 赞皇县|