2017年8月31日 星期四

[JavaScript] Overloading, arguments

  • JavaScript 
    • 不支源函式 Overloading (多載) 的功能
function UserInfo (){
    console.log('Lyndon, 30');
}

function UserInfo (name){
    console.log(name, '30' );
}

UserInfo();
    • Result:如同 JavaScript 的特性,後面的 function 取代前面的 function
  • JavaScript - arguments 
    • 函數的參數是以類似陣列的物件所維護。在函數內部,如下定位傳遞給函數的參數︰
arguments[i]
    •  i 是參數的順序編號,從 0 開始
    • 使用 arguments.length 來得知實際傳給函數的參數數目

function UserInfo(separator) {
    var result = "";

    for (var i = 1; i < arguments.length; i++) {
        result += arguments[i] + separator;
    }

    console.log(result);

}

UserInfo(',', 'Lyndon', 'Ken', 'May');
UserInfo('|', 'Lyndon', 'Ken', 'May');
UserInfo('-', 'Lyndon', 'Ken', 'May');
    • Result:傳送任意的參數數目給函數
  • 使用 arguments 來解決 Overloading 問題

function UserInfo() {
    if (arguments.length == 0) {
        console.log('Lyndon, 30');
    } else {
        console.log(arguments[0], '30');
    }
}

UserInfo();
UserInfo('Ken');
    • Result:可見兩種不同使用方法的結果

沒有留言:

張貼留言