欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript匿名函數之模仿塊級作用域

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

匿名函數

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

匿名函數:就是沒有函數名的函數。

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

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

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

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

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

 第三種:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

相關文章

  • 原生JS實現的碰撞檢測功能示例

    原生JS實現的碰撞檢測功能示例

    這篇文章主要介紹了原生JS實現的碰撞檢測功能,涉及javascript鼠標事件響應及頁面圖形坐標位置運算、檢測相關操作技巧,需要的朋友可以參考下
    2018-05-05
  • 微信小程序商城項目之商品屬性分類(4)

    微信小程序商城項目之商品屬性分類(4)

    這篇文章主要為大家詳細介紹了微信小程序商城項目之商品屬性值聯(lián)動選擇,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • Javascript 鼠標移動上去 滑塊跟隨效果代碼分享

    Javascript 鼠標移動上去 滑塊跟隨效果代碼分享

    這篇文章主要介紹了Javascript 鼠標移動上去 滑塊跟隨效果代碼,有需要的朋友可以參考一下
    2013-11-11
  • JS與jQ讀取xml文件的方法

    JS與jQ讀取xml文件的方法

    本文通過代碼實例給大家講解js讀取xml文件及jq讀取xml文件的方法,對本文感興趣的朋友一起學習吧
    2015-12-12
  • js canvas實現畫圖、濾鏡效果

    js canvas實現畫圖、濾鏡效果

    這篇文章主要為大家詳細介紹了js canvas實現畫圖、濾鏡效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11
  • javaScript中with函數用法實例分析

    javaScript中with函數用法實例分析

    這篇文章主要介紹了javaScript中with函數用法,實例分析了javascript中with的功能、定義及相關使用技巧,需要的朋友可以參考下
    2015-06-06
  • uniapp微信小程序強制更新解決示例詳解

    uniapp微信小程序強制更新解決示例詳解

    這篇文章主要為大家介紹了uniapp微信小程序強制更新解決的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-10-10
  • JavaScript一文帶你玩轉web表單網頁

    JavaScript一文帶你玩轉web表單網頁

    表單通常用來收集網頁訪問者信息,常見的表單比如搜索引擎的搜索框、各網頁應用的注冊或者登陸界面等,通讀本篇對大家的學習或工作具有一定的價值,需要的朋友可以參考下
    2021-10-10
  • 自適應布局meta標簽中viewport、content、width、initial-scale、minimum-scale、maximum-scale總結

    自適應布局meta標簽中viewport、content、width、initial-scale、minimum-sca

    這篇文章主要介紹了移動客戶端手機頁面布局時各標簽元素作用和適用情景,通過詳解幾種屬性讓讀者更明確自適應布局的注意點,具體操作步驟大家可查看下文的詳細講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • javascript中call apply 的應用場景

    javascript中call apply 的應用場景

    call, apply都屬于Function.prototype的一個方法,它是JavaScript引擎內在實現的,因為屬于Function.prototype,所以每個Function對象實例,也就是每個方法都有call, apply屬性.
    2015-04-04

最新評論