## 一、定義方法:在Javascript中必須用function關鍵字
~~~
function funcName(arg1,arg2...)
{
statements;
return "變量值"; //返回值可以根據函數的需要
}
~~~
函數名是函數自身的一個引用。此種方式創立的函數引用是獨立存在的,無法刪除。
? 1、調用函數:函數名(參數列表)。
傳遞的參數不必與函數定義的參數個數一致,并且可以設定函數參數的默認值。
~~~
function example(a,b){
? var a = arguments[0] ? arguments[0] : 1;//設置參數a的默認值為
? var b = arguments[1] ? arguments[1] : 2;//設置參數b的默認值為2
? return a+b;
}
alert(example()); //輸出3
~~~
其他方法:[設置默認參數方式](http://blog.csdn.net/u011043843/article/details/26155307)
? 2、嵌套函數:在JS中,函數的定義中還可以再次定義新的函數
~~~
function say()
{
function add(x,y)
{
return (x+y);
}
alert(add(2,3));
}
say(); //輸出5
~~~
內嵌函數add()只能在嵌套它的函數(say())中調用,而不能再外部調用。
? 3、條件函數:
~~~
var b = false;
if(b)
{
function ex1()
{
alert(1);
}
ex1();
}
else
{
function ex2()
{
alert(0);
}
ex2();
}
~~~
輸出0,將b的值改為TRUE,則輸出1,不演示。條件函數的花括號不具有范圍限制,即可以在花括號外訪問函數。
## 二 、函數的特殊條用方式:網頁中的所有方法可以看做全局對象window對象的方法
~~~
function add(x,y)
{
return x+y;
}
//1
alert(window.add(2,3));
//2
alert(window['add'](2,3));
~~~
以上結果均是5
## 三、函數表達式定義函數:匿名函數
1、定義方式:var fucName = function(arg1,arg2,...){statements;}
~~~
var add = function (x,y)
{
return x+y;
}
alert(add(2,3));//輸出為5
~~~
其中,add是該函數的唯一引用,當add=null,該函數便不能再調用。
2、匿名自執行函數:
~~~
(function(x,y)
{
alert(x + y) ;
})(2,3); //立即自動執行,結果為5
~~~
3、匿名函數的用途
2.1 ?用于一次調用后就丟棄的函數
2.2 ?向prototype屬性附加函數以實現對象方法的定義
## 四、使用Function定義函數:
? ? 在JS中,Function為核心類的一種,而其他方式定義的函數也均作為對象對待,因為在JS中的OOP中,不存在類的概念,這是JS與Java、C#等語言的區別。
var add = new Function(“函數參數”,"函數體"); add為函數名,即函數的一個引用。
~~~
var add = new Function('x','y',"return x+y");
alert(add(2,3));
~~~
上述的結果為5.
## 五、閉包函數:當一個函數不位于它所處環境(變量的作用范圍)被調用,仍可使用本地變量(脫離了變量的作用范圍仍可使用該變量),這是閉包函數的顯著特征。
? 5.1 ? ?作為值從函數返回的函數是閉包函數
~~~
function B()
{
var temp="abc";
function A()
{
alert("閉包函數處理本地變量temp = "+temp);
}
return A;
}
var a = B();
a();
~~~
運行結果:(本地變量是函數內聲明的變量)

? 5.2 ? 利用變量的作用范圍形成閉包函數
~~~
var F;
function B()
{
var temp="abc";
F=function ()
{
alert("利用變量范圍形成閉包函數處理本地變量temp = "+temp);
}
}
B();
F();
~~~
運行結果

- 前言
- 一
- 二:變量
- 三:數據運算
- 四:流程控制
- 五:內建的全局函數
- 六:自定義函數
- 七:面向對象編程(OOP)
- 八:靜態成員、靜態類、枚舉、重載和覆蓋
- 九:原型鏈本質論
- 十:ECMAScript 5 增強的對象模型
- 十一:處理字符串---String類和正則表達式
- 十二:數組、多維數組和符合數組(哈希映射)
- 十三:處理日期和時間
- 十四:JavaScript內建類
- 十五:BOM之源---window對象
- 十六:BOM之源---BOM基本應用
- 十七:BOM新成就(1)--客戶端存儲數據(Storage實現)
- 十八:BOM新成就(1)--客戶端存儲數據(Web SQL DataBase實現)
- 十九--HTML5 DOM新標準---處理文檔元信息和管理交互能力
- 二十---XMLHttpRequest和AJAX解決方案