JavaScript 函數簡介

JavaScript 函數簡介

JS函數的概念

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

函數的做用

正如函數的概念, 咱們能夠根據代碼須要, 將特定的功能用函數來包裹瀏覽器

使用函數的好處

  • 函數能夠在同一個程序或其餘程序中屢次重複使用(經過函數名調用)
  • 使程序變得更簡短而清晰
  • 有利於程序維護

函數的分類

函數能夠分爲:內置函數自定義函數安全

  • 內置函數:dom

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

函數定義和調用

  • 函數簡單定義

語法格式:函數

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

注意:code

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

例如:定義一個函數 ShowTips對象

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

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

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

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

  • 函數標準定義

語法格式:ip

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));
相關文章
相關標籤/搜索