2012-03-21 13 views
0

私は似たような問題を見つけることができません。正しい質問/答えが見つからないためです。 関数を呼び出すときに引数が渡されない場合、デフォルト値を使用する関数を作成したい場合は、デフォルト値を関数のパラメータで渡された値に置き換えます。たとえば :どんなのparamsせずに機能openBlock()を呼び出す場合デフォルトではJavascript機能は必要ありません値

function openBlock(false){ 
    // if parameter was passed with 'false' value, it will do this 

    // else it will put automatically a 'true' value to an function's argument 
} 

だから、それはデフォルトでのparam trueだことを検討します。 openBlock(false)のように、引数がfalseの関数を呼び出すと、デフォルトの動作が上書きされます。

ありがとうございます。

答えて

2

JavaScriptでこれを行うためのさまざまな方法がありますが、最も簡単なパターンは次のとおりです。

function(option) { 
    option = option || "default"; 
    // do stuff 
} 

しかし、それは意志としてノートを@FelixKlingとして、これは、あなたのケースでは動作しません任意のfalse-y値(引数を明示的にfalseに設定するなど)をデフォルトに置き換えます。あなたはtrueをデフォルトにしたいブール引数については、以下のものが必要です。

あなたが1つまたは2つ以上の引数を扱っている
function(option) { 
    // default to "true" 
    option = option !== undefined ? option : true; 
    // do stuff 
} 

は、最良のオプションは、単一のoptionsまたはconfig引数を使用してかどうかを確認することが多いですプロパティの有無:

function(options) { 
    var arg1 = option.arg1 !== undefined ? false : true; 
    var arg2 = option.arg2 || "default"; 
    // do stuff 
} 

あなたはjQueryのようなライブラリを使用してまたはアンダースコアしている場合は、extend方法は、デフォルト値でオブジェクトを設定して、それらが存在する場合は供給された値でそれらを上書きすることが非常に容易になります:

function(options) { 
    var defaults = { 
     arg1: true, 
     arg2: "default" 
    }; 
    options _.extend(defaults, options); 
    // do stuff 
} 
+0

'option'が' false'なら 'true'に設定されます。 –

+0

@FelixKling - true、updated。私は通常、false-y値をブール値ではなくデフォルトに置き換えるべき場合にこのパターンを使用します。 – nrabinowitz

+0

本当にありがとう、私はそれが私が尋ねたものだと思う、今それをチェックする – aspirinemaga

2

JavaScriptには他の言語と同じように実装されたデフォルトパラメータはありません。

あなたはそれらを自分で実装する必要があります:

function openBlock(argument) { 
    argument = typeof argument !== 'undefined'; 
} 

は、より一般的なアプローチのためIs there a better way to do optional function parameters in Javascript?を見てみましょう。何が内蔵されていないものの

+0

お送りいただきありがとうございます。 – aspirinemaga

+0

'openBlock(true)'はこのコードでは 'openBlock(false)'と同じです。 –

+0

@MaxNanasy:これを書いたときに私が何を考えているのか分かりません... – Blender

関連する問題