中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)頁制作 > Javascript的匿名函數(shù)
Js的MessageBox 回到列表 一個簡潔的管理菜單
 Javascript的匿名函數(shù)

作者:秦歌 時間: 2008-05-12 文檔類型:原創(chuàng) 來自:藍(lán)色理想

秦歌(YanKaven) 的站點:http://dancewithnet.com/

一、什么是匿名函數(shù)?

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

  1. 函數(shù)關(guān)鍵字(function)語句:
    function fnMethodName(x){alert(x);}
  2. 函數(shù)字面量(Function Literals):
    var fnMethodName = function(x){alert(x);}
  3. Function()構(gòu)造函數(shù):
    var fnMethodName = new Function('x','alert(x);')

上面三種方法定義了同一個方法函數(shù)fnMethodName,第1種就是最常用的方法,后兩種都是把一個函數(shù)復(fù)制給變量fnMethodName,而這個函數(shù)是沒有名字的,即匿名函數(shù)。實際上,相當(dāng)多的語言都有匿名函數(shù)

二、函數(shù)字面量和Function()構(gòu)造函數(shù)的區(qū)別

  1. 雖然函數(shù)字面量是一個匿名函數(shù),但語法允許為其指定任意一個函數(shù)名,當(dāng)寫遞歸函數(shù)時可以調(diào)用它自己,使用Function()構(gòu)造函數(shù)則不行。
    var f = function fact(x) { if (x < = 1) return 1; else return x*fact(x-1); };
  2. Function()構(gòu)造函數(shù)允許運行時Javascript代碼動態(tài)的創(chuàng)建和編譯。在這個方式上它類似全局函數(shù)eval()。
  3. Function()構(gòu)造函數(shù)每次執(zhí)行時都解析函數(shù)主體,并創(chuàng)建一個新的函數(shù)對象。所以當(dāng)在一個循環(huán)或者頻繁執(zhí)行的函數(shù)中調(diào)用Function()構(gòu)造函數(shù)的效率是非常低的。相反,函數(shù)字面量卻不是每次遇到都重新編譯的。
  4. 用Function()構(gòu)造函數(shù)創(chuàng)建一個函數(shù)時并不遵循典型的作用域,它一直把它當(dāng)作是頂級函數(shù)來執(zhí)行。
    var y = "global"; function constructFunction() { var y = "local"; return new Function("return y"); // 無法獲取局部變量 } alert(constructFunction()()); // 輸出 “global”

和函數(shù)關(guān)鍵字定義相比Function()構(gòu)造器有自己的特點且要難以使用的多,所以這項技術(shù)通常很少使用。而函數(shù)字面量表達(dá)式和函數(shù)關(guān)鍵字定義非常接近?紤]前面的區(qū)別,雖然有消息說字面量的匿名函數(shù)在OS X 10.4.3下的某些webkit的引擎下有bug,但我們平常所說的匿名函數(shù)均指采用函數(shù)字面量形式的匿名函數(shù)。

三、匿名函數(shù)的代碼模式

昨天 hedger wang 在他的blog介紹了 幾種匿名函數(shù)的代碼模式

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

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

  1. 函數(shù)字面量:首先聲明一個函數(shù)對象,然后執(zhí)行它。
    (function(){ alert(1); } ) ( );
  2. 優(yōu)先表達(dá)式:由于Javascript執(zhí)行表達(dá)式是從圓括號里面到外面,所以可以用圓括號強制執(zhí)行聲明的函數(shù)。
    ( function(){ alert(2); } ( ) );
  3. Void操作符:用void操作符去執(zhí)行一個沒有用圓括號包圍的一個單獨操作數(shù)。
    void function(){ alert(3); }()

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

四、匿名函數(shù)的應(yīng)用

  1. 《Javascript的一種模塊模式》中的第一句話就是“全局變量是魔鬼”。配合var關(guān)鍵字,匿名函數(shù)可以有效的保證在頁面上寫入Javascript,而不會造成全局變量的污染。這在給一個不是很熟悉的頁面增加Javascript時非常有效,也很優(yōu)美。實際上,YUI以及其相應(yīng)的范例中大量使用匿名函數(shù),其他的Javascript庫中也不乏大量使用。
  2. Javascript的函數(shù)式編程(functional programming)的基石。具體請看《用函數(shù)式編程技術(shù)編寫優(yōu)美的 JavaScript》《函數(shù)式JavaScript編程指南》。
本文鏈接:http://www.95time.cn/tech/web/2008/5769.asp 

出處:藍(lán)色理想
責(zé)任編輯:bluehearts

◎進(jìn)入論壇網(wǎng)頁制作、WEB標(biāo)準(zhǔn)化版塊參加討論,我還想發(fā)表評論。

相關(guān)文章 更多相關(guān)鏈接
Js的MessageBox
也談javascript程序優(yōu)化問題
[js效果]商品分類到搜索欄友好提示
認(rèn)識延遲時間為0的setTimeout
關(guān)于Javascript的內(nèi)存泄漏問題
作者文章 更多作者文章
Firefox2中輸入框丟失光標(biāo)bug
Javascript風(fēng)格要素 Ⅱ
Firefox 2和3在windows下的共存
Javascript風(fēng)格要素 Ⅰ
Javascript的一種模塊模式
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機(jī)制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2