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

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)頁制作 > 悟透JavaScript
標(biāo)記語言——短語元素 回到列表 標(biāo)記語言——表單
 悟透JavaScript

作者:李戰(zhàn) 時間: 2008-05-29 文檔類型:轉(zhuǎn)載 來自:軟件真諦

第 1 頁 引子
第 2 頁 回到簡單
第 3 頁 沒有類
第 4 頁 函數(shù)的魔力
第 5 頁 奇妙的對象
第 6 頁 放下對象
第 7 頁 對象素描
第 8 頁 構(gòu)造對象
第 9 頁 初看原型
第 10 頁 原型擴(kuò)展
第 11 頁 原型真諦
第 12 頁 編程的快樂

函數(shù)的魔力

接下來,我們再討論一下JavaScript函數(shù)的魔力吧。

JavaScript的代碼就只有function一種形式,function就是函數(shù)的類型。也許其他編程語言還有procedure或 method等代碼概念,但在JavaScript里只有function一種形式。當(dāng)我們寫下一個函數(shù)的時候,只不過是建立了一個function類型的實體而已。請看下面的程序:

    function myfunc()
    {
        alert("hello");
    };
   
    alert(typeof(myfunc));

這個代碼運(yùn)行之后可以看到typeof(myfunc)返回的是function。以上的函數(shù)寫法我們稱之為“定義式”的,如果我們將其改寫成下面的“變量式”的,就更容易理解了:

    var myfunc = function ()
        {
            alert("hello");
        };
   
    alert(typeof(myfunc));

這里明確定義了一個變量myfunc,它的初始值被賦予了一個function的實體。因此,typeof(myfunc)返回的也是function。其實,這兩種函數(shù)的寫法是等價的,除了一點細(xì)微差別,其內(nèi)部實現(xiàn)完全相同。也就是說,我們寫的這些JavaScript函數(shù)只是一個命了名的變量而已,其變量類型即為function,變量的值就是我們編寫的函數(shù)代碼體。

聰明的你或許立即會進(jìn)一步的追問:既然函數(shù)只是變量,那么變量就可以被隨意賦值并用到任意地方啰?

我們來看看下面的代碼:

    var myfunc = function ()
        {
            alert("hello");
        };
    myfunc(); //第一次調(diào)用myfunc,輸出hello
   
    myfunc = function ()
        {
            alert("yeah");
        };   
    myfunc(); //第二次調(diào)用myfunc,將輸出yeah

這個程序運(yùn)行的結(jié)果告訴我們:答案是肯定的!在第一次調(diào)用函數(shù)之后,函數(shù)變量又被賦予了新的函數(shù)代碼體,使得第二次調(diào)用該函數(shù)時,出現(xiàn)了不同的輸出。

好了,我們又來把上面的代碼改成第一種定義式的函數(shù)形式:

    function myfunc ()
    {
        alert("hello");
    };
    myfunc(); //這里調(diào)用myfunc,輸出yeah而不是hello
   
    function myfunc ()
    {
        alert("yeah");
    };   
    myfunc(); //這里調(diào)用myfunc,當(dāng)然輸出yeah

按理說,兩個簽名完全相同的函數(shù),在其他編程語言中應(yīng)該是非法的。但在JavaScript中,這沒錯。不過,程序運(yùn)行之后卻發(fā)現(xiàn)一個奇怪的現(xiàn)象:兩次調(diào)用都只是最后那個函數(shù)里輸出的值!顯然第一個函數(shù)沒有起到任何作用。這又是為什么呢?

原來,JavaScript執(zhí)行引擎并非一行一行地分析和執(zhí)行程序,而是一段一段地分析執(zhí)行的。而且,在同一段程序的分析執(zhí)行中,定義式的函數(shù)語句會被提取出來優(yōu)先執(zhí)行。函數(shù)定義執(zhí)行完之后,才會按順序執(zhí)行其他語句代碼。也就是說,在第一次調(diào)用myfunc之前,第一個函數(shù)語句定義的代碼邏輯,已被第二個函數(shù)定義語句覆蓋了。所以,兩次都調(diào)用都是執(zhí)行最后一個函數(shù)邏輯了。

如果把這個JavaScript代碼分成兩段,例如將它們寫在一個html中,并用<script/>標(biāo)簽將其分成這樣的兩塊:

<script>
    function myfunc ()
    {
        alert("hello");
    };
    myfunc(); //這里調(diào)用myfunc,輸出hello
</script>

<script>
    function myfunc ()
    {
        alert("yeah");
    };   
    myfunc(); //這里調(diào)用myfunc,輸出yeah
</script>

這時,輸出才是各自按順序來的,也證明了JavaScript的確是一段段地執(zhí)行的。

一段代碼中的定義式函數(shù)語句會優(yōu)先執(zhí)行,這似乎有點象靜態(tài)語言的編譯概念。所以,這一特征也被有些人稱為:JavaScript的“預(yù)編譯”。

大多數(shù)情況下,我們也沒有必要去糾纏這些細(xì)節(jié)問題。只要你記住一點:JavaScript里的代碼也是一種數(shù)據(jù),同樣可以被任意賦值和修改的,而它的值就是代碼的邏輯。只是,與一般數(shù)據(jù)不同的是,函數(shù)是可以被調(diào)用執(zhí)行的。

不過,如果JavaScript函數(shù)僅僅只有這點道行的話,這與C++的函數(shù)指針,DELPHI的方法指針,C#的委托相比,又有啥稀奇嘛!然而,JavaScript函數(shù)的神奇之處還體現(xiàn)在另外兩個方面:一是函數(shù)function類型本身也具有對象化的能力,二是函數(shù)function與對象 object超然的結(jié)合能力。

出處:軟件真諦
責(zé)任編輯:moby

上一頁 沒有類 下一頁 奇妙的對象

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

相關(guān)文章 更多相關(guān)鏈接
Js的MessageBox
Javascript的匿名函數(shù)
也談javascript程序優(yōu)化問題
[js效果]商品分類到搜索欄友好提示
認(rèn)識延遲時間為0的setTimeout
作者文章
主鍵的故事
關(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
>> 分頁 首頁 前頁 后頁 尾頁 頁次:4/121個記錄/頁 轉(zhuǎn)到 頁 共12個記錄

藍(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