首頁 >web前端 >js教程 >如何在 JavaScript 函數呼叫中模擬命名參數?

如何在 JavaScript 函數呼叫中模擬命名參數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-06 00:51:09156瀏覽

How Can I Simulate Named Parameters in JavaScript Function Calls?

在JavaScript 函數呼叫中模擬命名參數

在C# 等程式語言中,命名參數允許透過指定參數名稱來進行清晰簡潔的函數呼叫以及他們的價值觀。然而,JavaScript 本身並未提供此功能。不過,有一些方法可以達到類似的效果。

ES2015 及更高版本:參數解構

隨著 ES2015 的引入,參數解構提供了一種內建機制模擬命名參數。使用此功能,函數可以接受物件作為參數並提取特定屬性作為命名參數:

function myFunction({ param1, param2 } = {}) {
  // ...function body...
}

然後呼叫者可以傳遞具有所需參數值的物件:

myFunction({ param1: 70, param2: 175 });

ES5:Function.prototype.toString 與物件關聯

在ES5 中,一個hackish方法涉及使用 Function.prototype.toString() 解析函數簽章並識別參數名稱。這允許我們將對象的屬性與相應的參數關聯起來:

var func = parameterfy(function(a, b, c) {
  console.log('a is ' + a, ' | b is ' + b, ' | c is ' + c);     
});

func(1, 2, 3); // a is 1  | b is 2  | c is 3
func(1, {b:2, c:3}); // a is 1  | b is 2  | c is 3

但是,這種方法有缺點:

  • 如果最後一個參數是一個對象,則將其視為作為“命名參數物件”。
  • 函數將始終接收所有定義的參數,未定義的值如下

其他注意事項

作為建立函數包裝器的替代方法,您還可以擁有接受函數和附加參數的函數,或擴充Function。支援使用命名參數執行函數的原型。

以上是如何在 JavaScript 函數呼叫中模擬命名參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn