Java script 中的函式使用方法

湯清麗發表於2019-12-08

前言

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

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
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章