若是須要屢次使用同一段代碼,能夠把它們封裝成一個函數。函數就是一組容許在你的代碼裏隨時調用的語句。事實上,每一個函數實際是一個短小的腳本。編程
先對函數作出定義再調用是一個良好的編程習慣。下面是一個簡單的示例函數:數組
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關鍵字來定義變量,就能避免任何形式的二次定義隱患。