第三章 基本概念(四) 函數(shù)

函數(shù)可以封裝任意多條語句。可以在任何地方。任何時(shí)候調(diào)用執(zhí)行。JS里面使用function關(guān)鍵字來聲明,后跟一組參數(shù)以及函數(shù)體。語法

function functionName(arg0,arg1,....argN)
{
   statements;
}

下面是一個(gè)函數(shù)實(shí)例:

function sayHi(name,message)
{
  alert("Hello"+name+","+message);
}

這個(gè)函數(shù)可以通過函數(shù)名來調(diào)用,后面還要加上一對(duì)圓括號(hào)和參數(shù)(圓括號(hào)里面的參數(shù)要是有多個(gè),可以用逗號(hào)隔開)調(diào)用sayHi()來運(yùn)行

sayHi("Peter","How are you");

剛才那個(gè)函數(shù)的輸出結(jié)果就是Hello Peter How are you today
函數(shù)中定義的命名參數(shù)name和message被用作了字符串拼接的兩個(gè)操作數(shù)。而結(jié)果顯示了出來.
任何函數(shù)在任何時(shí)候都可以通過return語句后跟要返回的值來實(shí)現(xiàn)返回值
請(qǐng)看下面的例子:

function sum(num1,num2)
{
 return num1 + num2;
}

這個(gè)sum()函數(shù)的作用就是把兩個(gè)值加起來返回一個(gè)結(jié)果。
var result = sum(5,10);
這個(gè)函數(shù)執(zhí)行完return語句后停止并立即退出。因此位于renturn后面的語句永遠(yuǎn)不會(huì)執(zhí)行

function sum(num1,num2)
{
 return num1+num2;
window.alert("Hello,world!");    //永遠(yuǎn)不會(huì)執(zhí)行
}

在這個(gè)例子中由于alert()函數(shù)語句位于return語句之后,因此永遠(yuǎn)不會(huì)執(zhí)行,當(dāng)然一個(gè)函數(shù)中也可以包含多個(gè)return語句,例如:

function diff(num1,num2)
{
 if(num1>num2)
{
  return num2-num1;
}else
{
    return num1-num2;
}
}

在這個(gè)例子中diff()函數(shù)用于計(jì)算兩個(gè)數(shù)值的差。
另外return語句也可以不帶任何的返回值,在這種情況下。函數(shù)停止執(zhí)行后返回undefined值。這種用法需要提前停止又不需要返回值得情況.

function sayHi(name,message)
{
   return ;
   window.alert(name+message);
}

理解參數(shù)

在JS中不介意傳遞進(jìn)來多少個(gè)參數(shù),也不在乎傳進(jìn)來的參數(shù)是什么類型。也就是說我們可以利用arguments對(duì)象來訪問所有的參數(shù)
其實(shí)aruguments對(duì)象只是與數(shù)組類似(它并不是Array的實(shí)例。)因此可以使用方括號(hào)的語法訪問它的每個(gè)元素。(即第一個(gè)元素arguments[0],第二個(gè)元素arguments[1]),使用length來確定傳遞了多少個(gè)參數(shù)。
例如:

function sayHi(name,message)
{
      window.alert("hello"+arguments[0]+arguments[1])
}

這樣也能訪問到第一個(gè)參數(shù)和第二個(gè)參數(shù)
通過訪問arguments對(duì)象的length屬性可以知道有多少個(gè)參數(shù)傳遞給函數(shù)。這樣每次被調(diào)用時(shí),輸出傳入的其中的參數(shù)個(gè)數(shù).

function how(){
   window.alert(arguments.length);
}
how("string",345);   // 2
how();  // 0
how(12);  //1
特別注意一點(diǎn)就是arguments可以與命名參數(shù)一起使用。如
function doadd(num1,num2)
{
  if(arguments.length ==1)
 {
  alert(num1+10);
  }else if(arguments.length==2)
{
  window.alert(arguments[0]+num2);
}
}

關(guān)于arguments的行為。那就是他的值永遠(yuǎn)與對(duì)應(yīng)命名參數(shù)保持同步。
function doadd(num1,num2)
{
     arguments[1] = 10 ;
   window.alert(arguments[0]+num2);
}
每次執(zhí)行這個(gè)doadd函數(shù)都會(huì)重寫第二個(gè)參數(shù),將第二個(gè)參數(shù)改變?yōu)?0,因此arguments[1]的里面值也會(huì)被修改,相當(dāng)于修改了num2,結(jié)果他們的值都會(huì)變成10

沒有重載

JS里面沒有重載。例如:

function addSomeNumber(num)
{
return num +100;
}
function addSomeNumber(num)
{
  return num+200;
}
var result = addSomeNumber(100);   // 300

在此,函數(shù)addSomeNumber()被定義了兩次。第一個(gè)版本給參數(shù)加100,而第二個(gè)版本給參數(shù)加200,由于后定義的函數(shù)覆蓋了定義的函數(shù)。所以最后返回的結(jié)果就是300

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

相關(guān)閱讀更多精彩內(nèi)容

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對(duì)象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,679評(píng)論 0 4
  • 86.復(fù)合 Cases 共享相同代碼塊的多個(gè)switch 分支 分支可以合并, 寫在分支后用逗號(hào)分開。如果任何模式...
    無灃閱讀 1,556評(píng)論 1 5
  • FreeCodeCamp - Basic JavaScript 寫在前面: 我曾經(jīng)在進(jìn)谷前刷過這一套題,不過當(dāng)時(shí)只...
    付林恒閱讀 16,578評(píng)論 5 28
  • 寶爸寶媽們都知道,繪本閱讀對(duì)孩子從小培養(yǎng)閱讀習(xí)慣很有幫助,但是,你知道讀繪本為什么會(huì)有幫助?會(huì)有怎樣的幫助?怎樣閱...
    泉葉閱讀 815評(píng)論 0 0
  • 我現(xiàn)在才明白:人是群居性動(dòng)物, 一個(gè)人只能勉強(qiáng)生存,而不能好好地生活。 1 父母的嘮叨,是最想聽的話語。 小時(shí)候,...
    深夜告白閱讀 436評(píng)論 0 0

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