有没有办法在Javascript中执行函数重载?

时间:2012-09-28 07:18:45

标签: javascript jquery

我的代码如下:

function getTopicOptions(accountID, showTitles, showSelectGroup) {
    "use strict";

    var accountID = store.getItem('AccountID');  
    showTitles = (showTitles !== 'undefined') ? showTitles : 'Y';
    showSelectGroup = (showSelectGroup !== 'undefined') ? showSelectGroup : 'Y';

这个想法是,如果没有提供showTitle和showSelectGroup,那么它们将获得默认值“Y”。

有没有办法通过函数重载或检查函数参数的方法(jslint?)或简化我需要做的事情而没有未定义的检查?

4 个答案:

答案 0 :(得分:3)

你可以这样做:

showTitles = showTitles || 'Y';

或者这也可以,但更详细

showTitles = showTitles ? showTitles : 'Y';

我不确定函数重载在哪里出现在您的问题中。

答案 1 :(得分:1)

有流行的默认params技巧:

var showSelectGroup = showSelectGroup || false;

但它依赖于param,如果它bool''0等)并且看起来像showSelectGroup || true则无法设置false < / p>

另见:

答案 2 :(得分:0)

修改

以下是可能的

var functionTest = function(argu) {
        argu = argu || 'my argument';//ifargu not passed than 'my argument'
        return argu;
};

alert(functionTest());
// browser alerts "my argument" 

javascript中没有函数重载的方法,

但如果你没有在功能中传递vlaue,那么它就变成了未定义的值,这意味着你可以调用这个函数

这个功能

getTopicOptions(accountID, showTitles, showSelectGroup)

可以像

一样调用
getTopicOptions(1);

其他两个值变为未定义。

答案 3 :(得分:0)

有一个arguments对象(或多或少)是所有提供的参数的数组。你可以循环使用这些。

请参阅http://javascriptweblog.wordpress.com/2011/01/18/javascripts-arguments-object-and-beyond/