《JavaScript Dom編程藝術》讀書筆記(四)

函數

若是須要屢次使用同一段代碼,能夠把它們封裝成一個函數。函數就是一組容許在你的代碼裏隨時調用的語句。事實上,每一個函數實際是一個短小的腳本。編程

先對函數作出定義再調用是一個良好的編程習慣。下面是一個簡單的示例函數:數組

function shout() {
    var beatles = Array("John","Paul","George","Ringo");
    for (var count = 0; count < beatles.length; count++ ) {
        alert(beatles[count]);
    }
}

這個函數裏的循環語句將依次彈出對話框來顯示Beatles樂隊成員的名字。若是想在本身的腳本里執行這一動做,能夠隨時使用以下的語句來調用這個函數:安全

shout();

每當須要反覆作一件事,均可以利用函數來避免重複鍵入大量的相同內容。能夠將不一樣的數據傳遞給它們,而它們將使用這些數據去完成預約的操做。傳遞給函數的數據稱爲參數(argument)。函數

定義一個函數的語法:code

function name(arguments) {
    statements;
}

JavaScript提供了許多內建函數,在前面屢次出現過的alert就是一例。這個函數須要咱們提供一個參數,它將彈出一個對話框來顯示這個參數的值。ip

在定義函數時,能夠爲它聲明任意多個參數,只要用逗號把它們分隔開來就行。在函數額內部,你能夠像使用普通變量那樣使用它的任何一個參數。作用域

下面是一個須要傳遞兩個參數的函數。若是把兩個數值傳遞給這個函數,這個函數將對它們進行乘法運算:字符串

function multiply(num1,num2) {
    vartotal = num1 * num2;
    alert(total);        
}

在定義了這個函數的腳本里,咱們能夠從任意位置去調用這個函數,以下所示:it

multiply(10,2);

屏幕上會馬上彈出一個顯示乘法運算結果(20)的alert對話框。函數不只可以(以參數的形式)接收數據,還可以返回數據。io

能夠建立一個函數並讓它返回一個數值、一個字符串、一個數組或一個布爾值。這須要用到return語句:

function multiply(num1,num2) {
    var total = num1 * num2;
    return total;
}

下面這個函數只有一個參數(一個華氏溫度值),它將返回一個數值(同一溫度的攝氏溫度值):

function converToCelsius(temp) {
    var result = temp - 32;
    result = result / 1.8;
    return result;
}

還能夠把函數當作一種數據類型來使用,這意味着能夠把一個函數的調用結果賦給一個變量:

var temo_fahrenheit = 95;
var temp_celsius = convertToCelsius(temp_fahrenheit);
alert(temp_celsius);

把華氏溫度值95轉換爲攝氏溫度值。這個例子中,變量temp_celsius的值將是35,這個數值由convertToCelsius函數返回。

變量的做用域

好比下面這個例子:

function square(num) {
    total = num * num;
    return total;
}
var total = 50;
var number = square(20);
alert(total);

全局變量total的值變成了400。本意是讓square()函數只把它計算出來的平方值返回給變量number,但由於未把這個函數內部的total變量明確地聲明爲局部變量,這個函數把名字一樣是total的那個全局變量的值也改變了。

把這個函數寫成以下所示的樣子纔是正確的:

function square(num) {
    var total = num * num;
    return total;
}

如今,全局變量total變得安全了,再怎麼調用square()函數也不會影響到它、

請記住,函數在行爲方面應該像一個自給自足的腳本,在定義一個函數式,必定要把它內部的變量所有明確地聲明爲局部變量。若是你老是在函數裏使用var關鍵字來定義變量,就能避免任何形式的二次定義隱患。

相關文章
相關標籤/搜索