DIV CSS 佈局教程網

javascript 函數介紹
編輯:JavaScript基礎知識     

1. 函數的定義和調用
在JavaScript中,定義函數最常用的方法就是調用function語句。該語句是由function關鍵字構成的,它後面緊跟的是:
Ø 函數名
Ø 一個用括號的參數列表,參數是可選的,參數是用逗號分隔開
Ø 包括在大括號中的函數體
使用函數需要注意的幾個地方:
Ø 在函數體中如果有return語句,它返回一個值;如果沒有的話,它返回undefined
Ø JavaScript不會檢測函數參數個數是否正確,如果傳遞實參多於形參,多余的實參將沒忽略;如果少於的話,那麼沒有被傳遞參數的形參被賦於undefined,在這種情況一般程序運行將出錯

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
運行結果:
ddxkj
undefined
aaa

ccc
aaa

ccc
aaa

undefined
1.1. 嵌套的函數
JavaScript 1.2和ECMAScript v3允許一個函數定義可以出現在另個函數中,也就是函數的嵌套。需要注意的是,ECMAScript v3不允許函數定義任意出現,它們仍然被限制在頂層全局代碼和頂層函數代碼中,這意味著函數定義不能出現在循環和條件語句中。例如:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
運行結果:
10000
1.2. Function()構造函數
在ECMAScript v1和JavaScript 1.1中,允許使用Function()和new動態定義一個函數。例如:var f = new Function("x", "y", "return x*y;");
該行代碼幾乎等價於:function f(x,y){return x*y;}
Function()構造函數可以接受任意多個字符串參數,最後一個參數就是函數體,可以包含任何JavsScrpt語句,每行語句之間使用;隔開。如果說函數沒有參數,只需一個函數體的字符串就可以了。
有時時Function()構造函數也被稱為匿名函數,是沒有定義了函數名。
Function()構造函數的用途:
Ø 動態創建和編譯一個函數。每調用一次函數,Function()構造函數都要編譯一次函數,這也就成了一個缺點。因此,在循環或經常被調用的函數中,一般不使用Function()構造函數。
Ø 將函數定義為JavaScript的表達式,而不是語句。不過在JavaScript中,如果想在表達式中定義一個函數,而不是在語句,使用函數直接量會更方便。
1.3. 函數直接量
函數直接量的語法和function語句非常相似,只不過它被用作表達式,而不是語句,而且可以不指定函數名。和function語句、Function()構造函數一樣,函數直接量也是創建函數的方式之一。如:
Ø function f(x){return x*x;} //function語句
Ø var f = new Funtion("x","return x*x;"); //Function()構造函數
Ø var f = function(x){return x*x;};
雖然函數直接量創建的是未命名函數,但也可以指定函數名,這在編寫調用
自身遞歸函數非常有用。如:
var f = function fact(x) { if (x <= 1) return 1; else return x*fact(x-1); };
上面代碼定義了一個未命名函數,並把它的引用存儲在f中。它並沒有創建fact()這個函數,只是允許函數體用這個名稱沒調用自身。
函數直接量可以像變量一樣,被賦值、被傳遞給函數,甚至直接調用。例如:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
運行結果:
100
25
2. 作為數據的函數
當函數被做為一種數據時,就可以像變量,被賦值、存儲在對象屬性或數組、傳遞給函數。
當以如下方式定義一個函數時,function square(x){return x*x;},定義了一個函數對象,並把這個函數對象賦值給了square。在這裡square沒有任何意義,不過只是一個對象而已,存儲了函數對象。可以將這個函數賦值給其它變量。例如:

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
運行結果:
16
100

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
運行結果:
25
hello world
100

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved