JS紅寶書-- 3.7 函數(shù)

  • 基本語法
    使用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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容