麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

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

2024-05-06 16:26:07
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript匿名函數之模仿塊級作用域的相關資料,需要的朋友可以參考下
 

匿名函數

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

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

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

第一種:這也是最常規的一種

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

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

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

 第三種:

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

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

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

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

該函數在java、C#等語言中,變量i只會在for循環語句中有定義,循環結束,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循環外部插入了一個私有作用域。在匿名函數中定義的任何變量,都會在執行結束時被銷毀。

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

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

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



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 中文字幕一区二区三区四区 | 国产成人在线播放视频 | 色婷婷久久久 | 国产一区二区免费在线观看视频 | 成人在线免费观看视频 | 成人短视频在线观看免费 | 黄色网址你懂的 | 国产精品视频二区不卡 | 久久久一区二区精品 | 狠狠干天天 | 末成年女av片一区二区 | 91 久久 | 69av导航| 国产精品午夜小视频观看 | 久久精品中文字幕一区 | 海外中文字幕在线观看 | 免费看成年人网站 | 免费亚洲视频在线观看 | 欧美a在线观看 | 亚洲人成网站免费播放 | 91久久另类重口变态 | 99精品视频99 | 手机在线看片国产 | 亚洲人成中文字幕在线观看 | 免费a视频 | 中文字幕综合 | 在线播放一级片 | 日本在线视 | 欧美亚洲国产一区 | 久久久久久久国产a∨ | 精品99在线视频 | 亚洲精品a在线观看 | 午夜男人免费视频 | 91成人免费在线观看 | 国产精品久久久久久婷婷天堂 | 日本精品久久久一区二区三区 | 亚洲精品久久久久久久久久 | 免费色片 | 在线观看视频毛片 | 亚洲国产网站 | 国产精品久久99精品毛片三a |