JavaScript 函式過載

Mehvish Ashiq 2023年1月30日 2022年5月10日
  1. 在 JavaScript 中使用 if-else 語句進行函式過載
  2. 在 JavaScript 中使用 switch 語句進行函式過載
  3. 在 JavaScript 中使用函式表示式進行函式過載
JavaScript 函式過載

本教程向你介紹 JavaScript 函式過載。函式過載意味著擁有多個同名函式和各種實現。但是,這個概念在 JavaScript 中不可用。

如果你有多個同名函式,則最後一個函式在 JavaScript 中執行。因此,我們使用替代方法在 JavaScript 中實現函式過載。

本教程使用 if-elseswitch 和函式表示式來完成函式過載。

在 JavaScript 中使用 if-else 語句進行函式過載

function displaySum() {
  // if no argument        
  if (arguments.length == 0) {
    console.log('No argument is passed.');
  }

  // if only one argument 
  else if (arguments.length == 1) {
    console.log('You have to pass at least two arugments to perform addition.');
  }

  // multiple arguments
  else {
    let sum = 0;
    let length = arguments.length;
    for (var i = 0; i < length; i++) {
      sum = sum + arguments[i];
    }
    console.log("Sum is " + sum);
  }
}

displaySum(); //call function with no parameter
displaySum(3); //call function with one parameter
displaySum(4, 5); //call function with two parameters
displaySum(3, 5, 7, 2, 9, 7, 8); //call function with multiple parameters

輸出:

"No argument is passed."
"You have to pass at least two arguments to perform addition."
"Sum is 9"
"Sum is 41"

在程式碼片段中,我們使用 if-else 語句在 JavaScript 中進行函式過載。我們呼叫 displaySum() 函式,它使用不同的引數執行不同的操作。如果沒有傳遞或傳遞一個引數,它會顯示一條訊息。

如果給定兩個引數,它將新增兩個數字,並使用 for 迴圈將多個引數中的所有值相加。arguments 是類似陣列的物件,它們起著至關重要的作用,可以在函式中使用。它表示正在使用它的特定函式傳遞的引數

在 JavaScript 中使用 switch 語句進行函式過載

我們還可以在 JavaScript 中通過使用 switch 語句而不是 if-else 語句來實現函式過載。儘管兩者都產生相同的輸出,但使用 switch 語句的程式碼看起來更簡潔。

function displaySum() {
  switch (arguments.length) {

    // if no argument        
    case 0:
      console.log('No argument is passed.');
      break;

      // if only one argument 
    case 1:
      console.log('You have to pass at least two arguments to perform addition.');
      break;

      // multiple arguments
    default:
      let sum = 0;
      let length = arguments.length;

      for (var i = 0; i < length; i++) {
        sum = sum + arguments[i];
      }
      console.log("Sum is " + sum);
      break;
  }
}

displaySum(); //call function with no parameter
displaySum(3); //call function with one parameter
displaySum(4, 5); //call function with two parameters
displaySum(3, 5, 7, 2, 9, 7, 8); //call function with multiple parameters

輸出:

"No argument is passed."
"You have to pass at least two arguments to perform addition."
"Sum is 9"
"Sum is 41"

在這段程式碼中,我們使用 switch 語句根據各種引數完成不同的操作。你可以在此處或上一節中閱讀有關 arguments 物件的資訊。

在 JavaScript 中使用函式表示式進行函式過載

// Creating a class "practiceFunctionOverloading"
class practiceFunctionOverloading {

  // Creating an overloadable function.
  displaySum() {

    // Define four overloaded functions
    var functionNoParam = function() {
      return "No parameter is passed.";
    };
    var functionOneParam = function(arg1) {
      return "You must have at least two parameters to sum.";
    };
    var functionTwoParam = function(arg1, arg2) {
      console.log("Sum is given below: ");
      return arg1 + arg2;
    };
    var functionMultiParam = function(arg1, arg2, arg3) {
      var sum = 0;
      for (var i = 0; i < arguments.length; i++) {
        sum = sum + arguments[i];
      }
      console.log("Sum is given below: ");
      return sum;
    };

    /* the length and type of the arguments passed 
       ( in this case an Array ) we can determine 
       which function to be executed */
    if (arguments.length === 0) {
      return functionNoParam();
    } else if (arguments.length === 1) {
      return functionOneParam(arguments[0]);
    } else if (arguments.length === 2) {
      return functionTwoParam(arguments[0], arguments[1]);
    } else if (arguments.length > 2) {
      return functionMultiParam(arguments[0], arguments[1], arguments[2]);
    }
  }
}
// Driver Code
//create an object of class practiceFunctionOverloading
var object = new practiceFunctionOverloading();
console.log(object.displaySum()); //call function with no parameter
console.log(object.displaySum(1)); //call function with one parameter
console.log(object.displaySum(2, 3)); //call function with two parameters
console.log(object.displaySum(2, 4, 5)); //call function with three parameters

輸出:

"No parameter is passed."
"You must have at least two parameters to sum."
"Sum is given below: "
5
"Sum is given below: "
11

我們使用函式和函式表示式來模擬使用 JavaScript 的函式過載。這種方法的缺點是如果傳遞了數百個引數,程式碼看起來會比較混亂。

Mehvish Ashiq avatar Mehvish Ashiq avatar

Mehvish Ashiq is a former Java Programmer and a Data Science enthusiast who leverages her expertise to help others to learn and grow by creating interesting, useful, and reader-friendly content in Computer Programming, Data Science, and Technology.

LinkedIn GitHub Facebook

相關文章 - JavaScript Function