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 || truefalse

また見てください:

于 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を渡さないと、未定義のvlaueになります。つまり、次のような関数を呼び出すことができます。

この関数

getTopicOptions(accountID, showTitles, showSelectGroup)

のように呼ぶことができます

getTopicOptions(1);

他の2つの値は未定義になります。

于 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 に答える