JavaScript用function關鍵字聲明函數,可以用return返回值,也可以沒有返回值。
建議:要么統一有返回值,要么統一都沒有返回值,這樣調試代碼方便。
函數定義格式:
function functionName(參數){
//函數體內
}
定義函數的時候,參數可以寫,也可以不寫,Javascript沒有限制傳遞參數的個數,也不介意傳入參數的數據類型。
所以函數的參數都是按值傳遞的
在函數體內可以通過arguments 對象來訪問參數數組,從而獲取傳遞給函數的每一個參數。
arguments.length:參數個數
用方括號語法訪問它的每一個參數。例如arguments[0]為傳進來的第一個參數。
function test(){ console.log("======"); console.log('agruments類型:'+typeof(arguments)) console.log("====for...in讀參數為===="); for(var each in arguments){ console.log(arguments[each]); } console.log("====for讀參數為===="); for(var i=0;i< arguments.length;i++){ console.log(arguments[i]); } console.log("===arguments.length==="); console.log(arguments.length) } test('a',20);
運行結果:

arguments的值永遠與對應命名參數的值保持同步,前提是傳入參數和命名參數一致。
示例:
function test(name,age){ console.log('傳進的age='+age) arguments[1]=50; console.log('給agruments[1]賦值后的age='+age) } test('line',20);
運行結果:

從運行結果發現,
arguments[1]的值與age的值是同步的
注意:所有參數傳遞的都只是值,不可能通過引用傳遞參數。
如果傳入參數少於命名參數,示例如下
function test(name,age){ console.log('傳進的age='+age) arguments[1]=50; console.log('給agruments[1]賦值后的age='+age) console.log('給agruments[1]賦值后的arguments[1]='+arguments[1]) } test('line');
運行結果如下:

從運行結果看出:
如果傳入參數少於命名參數,那命名參數與arguments是不會同步的
