国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > 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教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 陆河县| 灌南县| 遂宁市| 四川省| 阿图什市| 金昌市| 淅川县| 德钦县| 营口市| 高州市| 邛崃市| 溧阳市| 武汉市| 瑞金市| 遂川县| 阜平县| 金昌市| 滕州市| 临清市| 杭州市| 洛隆县| 家居| 汕尾市| 博客| 渑池县| 海南省| 呼图壁县| 阳泉市| 青州市| 穆棱市| 新巴尔虎左旗| 青河县| 东乡族自治县| 西丰县| 台湾省| 富宁县| 济南市| 福建省| 临清市| 化德县| 固镇县|