欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JavaScript進階教程(第一課)第3/3頁

 更新時間:2007年04月06日 00:00:00   作者:  

這里是一個應用變量的例子:
    var happiness = "a banana split";
    alert("The monkeys think happiness is " + happiness);
    這行代碼聲明一個叫做happiness的變量,然后在一個alert對話框中調(diào)用這個變量。如果你看過別人的JavaScript,你可能會注意到他們在聲明變量時使用了var,這種用法可能會造成問題。首先,可能會造成有些版本的MSIE癱瘓,或運行不正常。這種情況在Mac機上的MSIE最有可能發(fā)生。其次,如果你編寫很復雜的JavaScripts,你必須編寫你自己的函數(shù),所以你必須了解變量的含義。
    正如上次的JavaScript教程: 第四課中所述,函數(shù)是被調(diào)用后執(zhí)行某特定功能的JavaScript程序代碼。最好的函數(shù)具有模塊化的特性,你可以控制輸入的變量以及輸出的結果。而且一旦編好之后你就無需擔心它會出問題,而且不會和別的函數(shù)發(fā)生沖突。要使編寫地函數(shù)具備這些穩(wěn)定的特性,你必須確保不要輕易改變那些作為參數(shù)傳遞給其他函數(shù)的變量. 下面對例子顯示了如果你不注意這些細節(jié)會造成什么后果。假設我們編寫一個程序?qū)⑷A氏溫度轉換為攝氏溫度。點擊華氏/攝氏來觀察一下我所指的意思。如果你轉換轉換華氏50度,則會出現(xiàn)一條信息:
    “50 degrees Fahrenheit is 10 degrees Celsius(華氏50度相當于攝氏10度)?!?
    以下是代碼:
    function fahrenToCelsius(fare)
    {
        temp = (faren - 32) * 5/9;
        return temp;
    }
    function convertTemp()
    {
        temp = prompt("what temperature fahrenheit? ","50");
        celsius = fahrenToCelsius(temp);
        alert(temp + " degrees Fahrenheit is " + celsius + " degrees Celsius.");
    } 
    這個程序很簡單。一個叫做convertTemp()得函數(shù)調(diào)用另外一個叫做fahrenToCelsius()并返回結果。如果你對本程序不是很懂,你需要重新學習一下javasript初級教程第四課。
    關于這個例子讓人困惑之處在兩個函數(shù)中都有一個叫做temp的變量,在convertTemp()函數(shù)中它的作用是儲存華氏溫度Fahrenheit值 (由用戶提供)。在fahrenToCelsius()函數(shù)中,它用于計算轉換后的攝氏溫度值Celsius。這個不僅讓我們感到困惑而且也會讓這個Javascript程序感到困惑。如果你試圖用變量運行這段代碼就會發(fā)生下面的結果:如果你希望轉換華氏50度,則會顯示下面的信息:"10 degrees Fahrenheit is 10 degrees Celsius."(華氏10度相當于攝氏10度)。為什么你輸入的是華氏50度,而程序卻將其理解為你輸入了10度呢?我們來研究一下這個程序的執(zhí)行過程。當我們調(diào)用函數(shù)convertTemp()并在提示欄中輸入了"50"時,我們得到temp = 50;然后"temp"被傳遞給函數(shù)farenToCelsius()。在farenToCelsius()中,參數(shù)faren被設定為50,而"temp" 被設定為(50 - 32) x 5/9, 其結果是10。在返回結果之前,各項參數(shù)值是:
    faren = 50
    temp = 10
    現(xiàn)在farenToCelsius()將10返回給變量celsius: 
    temp = 10
    celsius = 10
    現(xiàn)在我們得到一個錯誤的語句: "10 degrees Fahrenheit is 10 degrees Celsius"。如果你仔細一些,不要將兩個函數(shù)中的變量起同樣的名稱就可以避免這些問題。但這也不是最佳解決方案。當你不斷加入更多的函數(shù)時,很難確保你不會將函數(shù)中的變量重名。而且如果你重復使用許多變量名例如loop,index,count和the_name時,使用不同的名稱實在是一個很令人頭疼的事。
    最好的解決辦法是讓JavaScript明白在fahrenToCelsius()函數(shù)中用到的變量temp和在convertTemp()函數(shù)中用到的變量temp是兩碼事。如果每個函數(shù)都有只應用于本函數(shù)內(nèi)部的變量temp你就無需擔心不同函數(shù)中的同名變量會攪成一團。而var就是用于這個目的。
    要使JavaScript中各種同名變量不會發(fā)生混淆,你可以在聲明變量時在變量前面加上var。在一個函數(shù)內(nèi)用var聲明后燈的變量叫做局部變量,它只存在于該函數(shù)內(nèi)部。通常情況下你應該盡量使用局部變量。
    這里是用var聲明后的正確的JavaScript代碼:
    function fahrenToCelsius(faren)
    {
        var temp = (faren - 32) * 5 / 9;
        return temp;
    }
    function convertTemp()
    {
        var temp = prompt("what temperature Fahrenheit? ","50");
        var celsius = badFahrenToCelsius(temp);
        alert(temp + " degrees Fahrenheit is " + celsius + " degrees Celsius.");
    }
    現(xiàn)在當我們輸入50時,(在convertTemp函數(shù)內(nèi)部) temp = 50
    temp被傳遞到函數(shù)fahrenToCelsius(),在函數(shù)fahrenToCelsius()內(nèi)部,參數(shù)faren現(xiàn)在被設定為50,然后temp用以下代碼設定:
    var temp = (faren - 32) * 5 / 9;
    由于這個temp變量前面用var做了聲明,所以該變量同其他函數(shù)中叫做temp的變量不同。執(zhí)行完fahrenToCelsius()時,該函數(shù)種的temp即告消失。所以在fahrenToCelsius()返回數(shù)值前,faren = 50
    (在fahrenToCelsius內(nèi)部) temp = 10
    (在convertTemp內(nèi)部) temp = 50
    fahrenToCelsius()然后返回它的變量temp值10。一旦我們從fahrenToCelsius()函數(shù)中出來,該函數(shù)中等temp變量的作用即告終止。當fahrenToCelsius() 返回時,它將變量的值設置為10: 
    (在convertTemp內(nèi)部) temp = 50
    (在convertTemp內(nèi)部) celsius = 10
    現(xiàn)在顯示的信息將是我們所希望的"50 degrees Fahrenheit is 10 degrees Celsius"。

相關文章

最新評論