JavaScript 函數簡介

JavaScript 函數簡介

JS函數的概念

函數就是把特定功能的代碼抽取出來,使之成爲程序中的一個獨立實體,起個名字(函數名)。

函數的作用

正如函數的概念, 我們可以根據代碼需要, 將特定的功能用函數來包裹

使用函數的好處

  • 函數可以在同一個程序或其他程序中多次重複使用(通過函數名調用)
  • 使程序變得更簡短而清晰
  • 有利於程序維護

函數的分類

函數可以分爲:內置函數自定義函數

  • 內置函數:

    是官方提供好的函數,可以直接使用
    如:  alert(),   isNaN(), console.log() parseInt()等
    
  • 自定義函數:
    是用戶自己定義的函數, 用戶可以根據實際需求, 對特定的功能使用函數來封裝

函數定義和調用

  • 函數簡單定義

語法格式:

function  函數名() {
           代碼塊;
      }

注意:

  1. 必須使用function關鍵字, 且爲小寫, 函數名自定義
  2. 函數名的命名規則和變量名一致
  3. 函數名後必須寫圓括號()

例如:定義一個函數 ShowTips

function ShowTips(x,y){
  alert('我要飛得更高');
}
  • 函數調用

函數的調用方式: 函數名()

 function ShowTips(x,y){
  alert('我要飛得更高');
}
ShowTips();

注意:
1.調用函數後會執行函數內部的代碼塊;
2.函數在不調用的情況下是不會執行的, 只有調用後函數中的代碼纔會執行

  • 函數標準定義

語法格式:

function 函數名(參數1,參數2,……)
      {
            執行語句;
            return 返回值;
      }

注意:

  1. 函數名後圓括號()中的參數數量不定, 也可以沒有; (根據功能需要)
  2. return關鍵字的作用是將某個值返回, 如果沒有返回值則默認返回undefined;

案例:定義一個函數Add求兩個數相加之和

function Add(x,y){
  var sum=x+y;
  return sum;
}

var result=Add(2,3); //函數調用
 alert(result);

注意:
1.函數體語句執行到return時,函數就終止代碼執行(return後的代碼不會執行)
2.如果return後有返回值,則把這個值返回到函數調用執行的地方

形參和實參

形參:

形參就是在函數定義時,函數名後面的參數;
函數的形參跟變量是一樣使用,且不能用var修飾

實參:

  實參就是調用時,函數名後面的參數

如: 之前定義的函數Add中: x和y是形參, 2和3是實參

function Add(x,y){
  var sum=x+y;
  return sum;
}

var result=Add(2,3); //函數調用
alert(result);

注意:
1.在傳值調用的機制中只能把實參傳送給形參,而不能把形參的值反向地傳送給實參。
2.因此在函數調用過程中,當形參值發生改變,而實參中的值不會變化。

arguments

arguments:函數內部隱藏的數組對象,保存着實參的信息,可以直接使用
函數在傳遞參數時就是用這個數組arguments來保存的
arguments.length:保存着實參的數量

函數的作用域

作用域: 就是起作用的範圍。或者說有效範圍; 這裏涉及到另外兩個概念。

  • 局部變量:

定義在函數內部的變量,這個變量只能在函數內部使用,即作用域範圍只是函數內部,另外,形參也是局部變量.
ps:函數內的變量使用遵循:就近原則

  • 全局變量:

全局變量就是定義在函數外部的變量,這個變量在任何函數中都有效,即作用域範圍是當前文件的任何地方.

JavaScript默認有一個全局對象window,全局作用域的變量實際上被綁定到window的一個屬性:

注意: 在定義變量時, 如果不寫關鍵字var也是合法的, 且是全局變量, 但是這樣寫不安全,容易在其他地方被更改, 所以我們在函數中寫變量要加上var

  • 變量聲明提前

語句:

var str1='abc';
var sum=str1+str2;
var str2='hello';
console.log(sum); //abcundefined

//JavaScript引擎自動提升了變量str2的聲明,但不會提升變量str2的賦值

函數的嵌套

函數的嵌套: 函數內部可以再包含其他函數;
函數之間允許相互調用(不能同時調用),也允許向外調用,
如果互相同時調用:就會出現死循環

對象函數的定義和調用

對象函數的定義

var 對象={
  屬性名:屬性值,
  屬性方法名:匿名函數
}

調用: 對象.屬性方法名()

事件驅動:

  因爲函數不會主動執行, 只有當調用的時候纔會執行函數中的代碼,  在前面的dom操作示例中,我們點擊了按鈕才觸發函數調用
  所有的函數,沒有調用不會執行,那麼在我們瀏覽器中函數調用的源頭在何處,就是事件, 只有使用事件去驅動, 函數才被調用; 如: onclick: 點擊事件

示例: 點擊搜索按鈕調用函數打印出文本框內容, 再清空文本框的內容

函數的遞歸調用

遞歸調用:

  函數可以自己調用自己, 成爲函數的遞歸調用;
function fact(num){
    var sum;
    if (num<=1){
      sum=1;
    }else{
      sum=num*fact(num-1);
    }
     return sum;
}
alert(fact(6));
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章