1

我的代码如下所示:

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

4 回答 4

3

你可以这样做:

showTitles = showTitles || 'Y';

或者这也可以,但更冗长

showTitles = showTitles ? showTitles : 'Y';

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

于 2012-09-28T07:21:53.977 回答
1

有一个流行的默认参数技巧:

var showSelectGroup = showSelectGroup || false;

但它取决于参数,如果它bool''0)并且看起来showSelectGroup || true你无法设置false

还请看:

于 2012-09-28T07:28:35.443 回答
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,它就变成了 undefined vlaue,这意味着你可以像这样调用函数

这个函数

getTopicOptions(accountID, showTitles, showSelectGroup)

可以称为

getTopicOptions(1);

其他两个值变得未定义。

于 2012-09-28T07:22:13.943 回答
0

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

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

于 2012-09-28T07:26:15.560 回答