#第七章函數
講師:_無腦碼農(張磊)_
博客:http://www.h5code.com
課程內容:
[TOC]
* * * * *
>函數是定義一次但卻可以調用或執行任意多次的一段JS 代碼。函數有時會有參數,即函數被調用時指定了值的局部變量。函數常常使用這些參數來計算一個返回值,這個值也成為函數調用表達式的值。
###1.>函數聲明
>在任何地方、任何時候調用執行。ECMAScript中的函數使用function 關鍵字來聲明,后跟一組參數以及函數體。
~~~
function box() { //沒有參數的函數
alert('只有函數被調用,我才會被之執行');
}
box(); //直接調用函數
function box(name, age) { //帶參數的函數
alert('你的姓名:'+name+',年齡:'+age);
}
box('無腦碼農',28); //調用函數,并傳參
~~~
###2.>return 返回值
>帶參和不帶參的函數,都沒有定義返回值,而是調用后直接執行的。實際上,任何函數都可以通過return語句跟后面的要返回的值來實現返回值。
~~~
function box() { //沒有參數的函數
return '我被返回了!'; //通過return 把函數的最終值返回
}
alert(box()); //調用函數會得到返回值,然后外面輸出
function box(name, age) { //有參數的函數
return '你的姓名:'+name+',年齡:'+age;//通過return 把函數的最終值返回
}
alert(box('無腦碼農',28));//調用函數得到返回值,然后外面輸出
~~~
>我們還可以把函數的返回值賦給一個變量,然后通過變量進行操作。
~~~
function box(num1, num2) {
return num1 * num2;
}
var num = box(10, 5); //函數得到的返回值賦給變量
alert(num);
~~~
>return 語句還有一個功能就是退出當前函數,注意和break 的區別。PS:break 用在循環和switch 分支語句里。
~~~
function box(num) {
if (num < 5) return num; //滿足條件,就返回num
return 100; //返回之后,就不執行下面的語句了
}
alert(box(10));
~~~
###3.>arguments 對象
>ECMAScript 函數不介意傳遞進來多少參數,也不會因為參數不統一而錯誤。實際上,函數體內可以通過arguments對象來接收傳遞進來的參數。
~~~
function box() {
return arguments[0]+' | '+arguments[1]; //得到每次參數的值
}
alert(box(1,2,3,4,5,6)); //傳遞參數
arguments 對象的length 屬性可以得到參數的數量。
function box() {
return arguments.length; //得到6
}
alert(box(1,2,3,4,5,6));
~~~
>我們可以利用length這個屬性,來智能的判斷有多少參數,然后把參數進行合理的應用。比如,要實現一個加法運算,將所有傳進來的數字累加,而數字的個數又不確定。
~~~
function box() {
var sum = 0;
if (arguments.length == 0) return sum; //如果沒有參數,退出
for(var i = 0;i < arguments.length; i++) { //如果有,就累加
sum = sum + arguments[i];
}
return sum; //返回累加結果
}
alert(box(5,9,12));
~~~
>ECMAScript 中的函數,沒有像其他高級語言那種函數重載功能。
~~~
function box(num) {
return num + 100;
}
function box (num) { //會執行這個函數
return num + 200;
}
alert(box(50)); //返回結果
~~~