<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        JavaScript中匿名函數的用法及優缺點詳解(圖文教程)

        來源:懂視網 責編:小OO 時間:2020-11-27 19:48:31
        文檔

        JavaScript中匿名函數的用法及優缺點詳解(圖文教程)

        匿名函數可以有效的保證在頁面上寫入Javascript,而不會造成全局變量的污染。這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優美。一、什么是匿名函數。在Javascript定義一個函數一般有如下三種方式。函數關鍵字(function)語句。function fnMethodName(x){alert(x);}。函數字面量(Function Literals)。var fnMethodName = function(x){alert(x);}。Function()構造函數。var fnMethodName = new Function(';x';,';alert(x);';)。上面三種方法定義了同一個方法函數fnMethodName。
        推薦度:
        導讀匿名函數可以有效的保證在頁面上寫入Javascript,而不會造成全局變量的污染。這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優美。一、什么是匿名函數。在Javascript定義一個函數一般有如下三種方式。函數關鍵字(function)語句。function fnMethodName(x){alert(x);}。函數字面量(Function Literals)。var fnMethodName = function(x){alert(x);}。Function()構造函數。var fnMethodName = new Function(';x';,';alert(x);';)。上面三種方法定義了同一個方法函數fnMethodName。

        下面我就為大家帶來一篇JavaScript中匿名函數的用法及優缺點詳解。現在就分享給大家,也給大家做個參考。

        匿名函數可以有效的保證在頁面上寫入Javascript,而不會造成全局變量的污染。

        這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優美。

        一、什么是匿名函數?

        在Javascript定義一個函數一般有如下三種方式:

        函數關鍵字(function)語句:

        function fnMethodName(x){alert(x);}

        函數字面量(Function Literals):

        var fnMethodName = function(x){alert(x);}

        Function()構造函數:

        var fnMethodName = new Function('x','alert(x);')

        上面三種方法定義了同一個方法函數fnMethodName,

        第1種就是最常用的方法,后兩種都是把一個函數復制給變量fnMethodName,而這個函數是沒有名字的,即匿名函數。

        實際上,相當多的語言都有匿名函數。

        二、函數字面量和Function()構造函數的區別

        雖然函數字面量是一個匿名函數,但語法允許為其指定任意一個函數名,當寫遞歸函數時可以調用它自己,使用Function()構造函數則不行。

        var f = function fact(x) { if (x < = 1) return 1; else return x*fact(x-1); };

        Function()構造函數允許運行時Javascript代碼動態的創建和編譯。在這個方式上它類似全局函數eval()。

        Function()構造函數每次執行時都解析函數主體,并創建一個新的函數對象。所以當在一個循環或者頻繁執行的函數中調用Function()構造函數的效率是非常低的。相反,函數字面量卻不是每次遇到都重新編譯的。

        用Function()構造函數創建一個函數時并不遵循典型的作用域,它一直把它當作是頂級函數來執行。

        var y = "global";

        function constructFunction() { var y = "local"; return new Function("return y"); // 無法獲取局部變量 } alert(constructFunction()()); // 輸出 “global”和函數關鍵字定義相比Function()構造器有自己的特點且要難以使用的多,

        所以這項技術通常很少使用。

        而函數字面量表達式和函數關鍵字定義非常接近。

        考慮前面的區別,雖然有消息說字面量的匿名函數在OS X 10.4.3下的某些webkit的引擎下有bug,

        但我們平常所說的匿名函數均指采用函數字面量形式的匿名函數。

        三、匿名函數的代碼模式

        錯誤模式:其無法工作,瀏覽器會報語法錯。

        function(){ alert(1); }();

        函數字面量:首先聲明一個函數對象,然后執行它。

        (function(){ alert(1); } ) ( );

        優先表達式:

        ( function(){ alert(2); } ( ) );

        void操作符:

        void function(){ alert(3); }()這三種方式是等同的,hedger wang因為個人原因比較喜歡第3種,而在實際應用中我看到的和使用的都是第1種。

        四、匿名函數的應用

        《Javascript的一種模塊模式》中的第一句話就是“全局變量是魔鬼”。

        配合var關鍵字,匿名函數可以有效的保證在頁面上寫入Javascript,而不會造成全局變量的污染。

        這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優美。

        實際上,YUI以及其相應的范例中大量使用匿名函數,其他的Javascript庫中也不乏大量使用。

        Javascript的函數式編程(functional programming)的基石。

        具體請看《用函數式編程技術編寫優美的 JavaScript》和《函數式JavaScript編程指南》。

        上面是我整理給大家的,希望今后會對大家有幫助。

        相關文章:

        javascript prototype原型詳解(基礎課程)

        JavaScript cookie詳解及簡單實例應用(圖文教程)

        javascript 注釋代碼的幾種方法(圖文教程)

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        JavaScript中匿名函數的用法及優缺點詳解(圖文教程)

        匿名函數可以有效的保證在頁面上寫入Javascript,而不會造成全局變量的污染。這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優美。一、什么是匿名函數。在Javascript定義一個函數一般有如下三種方式。函數關鍵字(function)語句。function fnMethodName(x){alert(x);}。函數字面量(Function Literals)。var fnMethodName = function(x){alert(x);}。Function()構造函數。var fnMethodName = new Function(';x';,';alert(x);';)。上面三種方法定義了同一個方法函數fnMethodName。
        推薦度:
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 国产啪亚洲国产精品无码| 毛片A级毛片免费播放| 4338×亚洲全国最大色成网站| 激情内射亚洲一区二区三区爱妻 | 亚洲国产精品va在线播放 | eeuss影院ss奇兵免费com| 免费一级毛片在播放视频| 免费看美女午夜大片| 亚洲国产精品一区二区第一页免 | 精品无码一区二区三区亚洲桃色| 日韩精品内射视频免费观看| 97亚洲熟妇自偷自拍另类图片| 久草视频在线免费看| 亚洲春色在线观看| 成年女人男人免费视频播放 | 亚洲精品人成网线在线播放va | 国产午夜精品久久久久免费视| 好看的电影网站亚洲一区| 99热精品在线免费观看| 亚洲精品国产啊女成拍色拍| 91免费精品国自产拍在线不卡| 国产av无码专区亚洲av毛片搜 | 免费三级毛片电影片| 亚洲av永久中文无码精品| 免费v片在线观看无遮挡| 美女被免费网站91色| 亚洲理论在线观看| 日韩免费三级电影| A毛片毛片看免费| 亚洲天堂中文字幕在线观看| 日本免费人成黄页网观看视频 | 日韩大片免费观看视频播放| 国产V亚洲V天堂无码| 久久不见久久见免费影院| 国产成人精品亚洲| 亚洲bt加勒比一区二区| 妞干网在线免费观看| 特a级免费高清黄色片| 中国在线观看免费的www| 亚洲综合区图片小说区| 亚洲?V乱码久久精品蜜桃|