Weird-JavaScript 25:重載函式

許多程式語言中都有重載函式的設定,但 JavaScript 卻沒有。為什麼?

重載函式(Function Overloading)

重載函式的意思是,讓相同的函式擁有不同數量的參數

由於在 JavaScript 中,函式屬於特別的函式物件,並不支援重載函式的功能。

不過,也因為函式在 JavaScript 中具有一級函式的特色,我們可以利用預設值,或將功能包裝成另一個函式,在流程中呼叫。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function greet(name, age, city){
city = city || 'Taipei' ;
if(city === 'Taipei') {
console.log('Hello! I am ' + name + ', and ' + age + 'years old. I came from Taiwan.') ;
}

if(city === 'Tokyo') {
console.log('Hello! I am ' + name + ', and ' + age + 'years old. I came from Japan ') ;
}
}

function greetTaipei(name, age){
return greet(name, age, 'Taipei') ;
}

function greetTokyo(name, age){
return greet(name, age, 'Tokyo') ;
}

greetTaipei('Fei', 23) ;
greetTokyo('Bai', 28) ;


結論

  • 在 JavaScript 中,函式屬於特別的函式物件,並不支援重載函式的功能。
  • 在 JavaScript 中,由於一級函式的特性,我們可以利用預設值或包裝函式的方式,達到重載函式的目的。

參考資料

  1. JavaScript 全攻略:克服 JS 奇怪的部分 4-40
Weird-JavaScript 26:語法解析器 Weird-JavaScript 24:參數(parameter v.s. arguments)

評論

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×