天天看點

Java script中的函數使用方法

前言

什麼是函數,就是把一段相對獨立的具有特定功能的代碼塊封裝起來,形成一個獨立實體,就是函數,起個名字(函數名),在開發中可以反複調用,函數的作用就是封裝一段代碼,可以重複使用。

1. 函數的聲明及調用

1.1聲明

  • 關鍵字聲明
function 函數名(){
  // 函數體
}           
  • 表達式聲明
var fn = function() {
  // 函數體
}           
  • 特點:

函數聲明的時候,函數體并不會執行,隻要當函數被調用的時候才會執行。

一個函數一般都特定的用來幹 一件 事情

1.2 調用

  • 調用函數的文法:
函數名();           

函數體隻有在調用的時候才會執行,調用需要()進行調用。

可以調用多次(重複使用)

// 聲明函數
function sayHi() {
  console.log("吃了沒?");
}

// 調用函數
sayHi();

// 求1-100之間所有數的和
function getSum() {
  var sum = 0;
  for (var  i = 0; i < 100; i++) {
    sum += i;
  }
  console.log(sum);
}
// 一段代碼可以多次調用
getSum();
getSum();
getSum();           

1.2 參數

  • 為什麼要有參數
function getSum() {
  var sum = 0;
  for (var i = 1; i <= 100; i++) {
    sum += i;
  }
  console.log();
}

// 雖然上面代碼可以重複調用,但是隻能計算1-100之間的值
// 如果想要計算n-m之間所有數的和,應該怎麼辦呢?           
  • 文法:
// 函數内部是一個封閉的環境,可以通過參數的方式,把外部的值傳遞給函數内部
// 帶參數的函數聲明
function 函數名(形參1, 形參2, 形參...){
  // 函數體
}

// 帶參數的函數調用
函數名(實參1, 實參2, 實參3);           
  • *形參和實參 *
  1. 形式參數:在聲明一個函數的時候,為了函數的功能更加靈活,有些值是固定不了的,對于這些固定不了的值。我們可以給函數設定參數。這個參數沒有具體的值,僅僅起到一個占位置的作用,我們通常稱之為形式參數,也叫形參。
  2. 實際參數:如果函數在聲明時,設定了形參,那麼在函數調用的時候就需要傳入對應的參數,我們把傳入的參數叫做實際參數,也叫實參。
function fn(a, b) {
  console.log(a + b);
}
var x = 5, y = 6;
fn(x,y); 
// x,y實參,有具體的值。
// 函數執行的時候會把x,y複制一份給函數内部的a和b,
// 函數内部的值是複制的新值,無法修改外部的x,y           
JS 函數在調用時,允許傳多個實參,就是實參個數可以比形參個數多;

1.3 函數的傳回值

當函數執行完的時候,并不是所有時候都要把結果列印。我們期望函數給我一些回報(比如計算的結果傳回進行後續的運算),這個時候可以讓函數傳回一些東西。也就是傳回值。函數通過return傳回一個值

傳回值文法:

//聲明一個帶傳回值的函數
function 函數名(形參1, 形參2, 形參...){
  //函數體
  return 傳回值;
}

//可以通過變量來接收這個傳回值
var 變量 = 函數名(實參1, 實參2, 實參3);           

傳回值詳解:

如果函數沒有顯示的使用 return語句 ,那麼函數有預設的傳回值:undefined
如果函數使用 return語句,那麼跟在return後面的值,就成了函數的傳回值
如果函數使用 return語句,但是return後面沒有任何值,那麼函數的傳回值也是:undefined
函數使用return語句後,這個函數會在執行完 return 語句之後停止并立即退出,也就是說return後面的所有其他代碼都不會再執行。
           

作業:

  • 求1-n之間所有數的和
  • 求n-m之間所有數的和
  • 求2個數中的最大值

1.4 函數相關的其它事情

1.4.1 匿名函數與自調用函數

匿名函數:沒有名字的函數

匿名函數如何使用:

将匿名函數指派給一個變量,這樣就可以通過變量進行調用
           
匿名函數如果沒有任何變量來表示它,那麼就不能直接調用來執行,是以可以通過匿名函數的自調用的方式來執行
(function () {
  alert(123);
})();           

關于自執行函數(匿名函數自調用)的作用:防止全局變量污染。

1.4.2 函數本身也是值

function fn() {}
console.log(typeof fn);           
  • 函數作為參數

因為函數也是一種值類型,可以把函數作為另一個函數的參數,在另一個函數中調用

function f1(f){
    //f = function f2(){
    //    console.log(2);
    //}
    f();
}

function f2(){
    console.log(2);
}
f1(f2); //2           
  • 函數做為傳回值

因為函數是一種類型,是以可以把函數可以作為傳回值從函數内部傳回。

function fn(b) {
  var a = 10;
  return function () {
    alert(a+b);
  }
}

var f = fn(5);
f();  //15