JavaScript Weird Part (32) - 框架小叮嚀:重載函數
這一節是關於框架或資源庫的應用。首先要了解的是為什麼 JavaScript 去掉一些其他程式語言的特性,這些特性又為何不重要。
重載函數 (Function overloading)
像是 Java、C++ 等程式語言都有重載函數的概念,這表示我讓同一個函數可以擁有不同數量的參數。但是這在 JavaScript 行不通,因為函數就是物件。儘管 JavaScript 不具備這個功能,但是我們也可以用 JavaScript 的一級函式概念處理
好比說「我不想要每次一直傳入 language
參數」。我們已經看過可以使用預設參數或 ||
運算子,然後使用這個函數裡的邏輯條件運算來決定。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| function greet(firstname, lastname, language) { language = language || 'en'; if (language === 'en') { console.log('Hello ' + firstname + ' ' + lastname); }
if (language === 'es') { console.log('Hola ' + firstname + ' ' + lastname); }
}
greet('John', 'Doe','en'); greet('John', 'Doe','es');
|
第二種方式是再包覆一層函式的方式
1 2 3 4 5 6 7 8 9 10
| function greetEnglish(firstname, lastname) { greet(firstname, lastname, 'en'); }
function greetSpanish(firstname, lastname) { greet(firstname, lastname, 'es'); }
greetEnglish('John', 'Doe'); greetSpanish('John', 'Doe');
|
儘管 JavaScript 沒有重載函式的概念,但是仍然有處理這一類問題的方式。