- 基本語法
使用function關(guān)鍵字聲明,后跟一組參數(shù)以及函數(shù)體
function sayHi(name,message){
alert("Hello " + name + "," + message);
}
// 通過函數(shù)名調(diào)用,后面接一對圓括號和參數(shù)
sayHi("fanison","你今天學(xué)習(xí)了嗎?")
使用return語句實現(xiàn)返回值,執(zhí)行完后立即退出
function sum(num1,num2){
return num1 + num2;
alert("Hello world"); //return 之后的代碼永遠(yuǎn)不會執(zhí)行
}
var result = sum(5,10)
// 一個函數(shù)可包含多個return
function diff(num1,num2){
if(num1 < num2){
return num2 - num1;
}else{
return num1 - num2;
}
}
return可以不帶返回值,函數(shù)在停止執(zhí)行后將返回 undefined。主要用于需要提前停止函數(shù)執(zhí)行而又不需要返回值的情況。
理解參數(shù)
函數(shù)在內(nèi)部用數(shù)組來表示,在函數(shù)體內(nèi)通過 arguments對象來訪問參數(shù)數(shù)組,從而獲取參數(shù)。
arguments對象長度由傳入的參數(shù)個數(shù)決定,沒有傳遞值的命名參數(shù)將自動被賦予 undefined
function sayHi(){
alert("Hello " + arguments[0] + ", " + arguments[1])
}
sayHi("fanison","你今天學(xué)習(xí)了嗎?")
- 通過
arguments對象length獲取參數(shù)個數(shù)
function howManyArgs(){
alert(arguments.length);
}
howManyArgs("fansion","add oil")
-
arguments對象可與命名參數(shù)一起使用
function doAdd(num1,num2){
if(arguments.length == 1){
alert(num1 + 10);
}else if(arguments.length == 2){
alert(arguments[0] + num2);
}
}
沒有重載
ES中沒有函數(shù)簽名概念,函數(shù)不能重載。因為其函數(shù)參數(shù)是以一個包含零或者多個值的數(shù)組的形式傳遞的
// 定義兩個名字相同的函數(shù),則該名字只屬于后定義的函數(shù)
function addSomeNumber(num){
return num + 100;
}
function addSomeNumber(num){
return num + 200;
}
var result = addSomeNumber(100); //300
- 模仿重載:檢查傳入函數(shù)中參數(shù)的類型和數(shù)量并作出不同的反應(yīng)
function doAdd(){
if(arguments.length == 1){
alert(arguments[0] + 10);
}else if(arguments.length ==2 ){
alert(arguments[0] + arguments[1]);
}
}
doAdd(10); // 20
doAdd(10,20); //30