web-dev-qa-db-ja.com

JavaScript関数のデフォルト引き数値

重複している可能性があります:
JavaScript関数のパラメータにデフォルト値を設定する方法

pHPでは:

function func($a = 10, $b = 20){
  // if func() is called with no arguments $a will be 10 and $ b  will be 20
}

JavaScriptでこれをどのように行うことができますか?

関数の引数に値を代入しようとするとエラーが発生します

仮パラメータの後)

217

JavaScriptでは、パラメータなしで関数を呼び出すことができます(パラメータがある場合でも)。

したがって、次のようにデフォルト値を追加することができます。

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   //your code
}

そして、あなたはfunc();のようにそれを呼び出してデフォルトのパラメータを使うことができます。

これがテストです。

function func(a, b){
   if (typeof(a)==='undefined') a = 10;
   if (typeof(b)==='undefined') b = 20;

   alert("A: "+a+"\nB: "+b);
}
//testing
func();
func(80);
func(100,200);
371
Ravan Scafi

ES2015以降:

ES6/ES2015以降、言語仕様にデフォルトパラメータがあります。だから私たちはただのような簡単なことをすることができます、

function A(a, b = 4, c = 5) {
}

または ES2015破壊 と組み合わせて、

function B({c} = {c: 2}, [d, e] = [3, 4]) {
}

詳細な説明は

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Functions/default_parameters

デフォルト関数パラメータは、値なしまたは未定義が渡された場合、仮パラメータをデフォルト値で初期化することを可能にします。

Pre ES2015:

NOT Numbers、Strings、Boolean、NaN、またはnullのような値を処理する場合は、単に使用することができます

(だから、あなたが決してnullを送ることを計画していないオブジェクト、配列、および関数のために、あなたは使うことができます)

param || DEFAULT_VALUE

例えば、

function X(a) {
  a = a || function() {};
}

これは単純に見え、ちょっとうまくいきますが、||はすべての偽の値(""nullNaNfalse0)にも作用するため、これは制限的でアンチパターンになることがあります。引数として渡されます。

そのため、undefined値のみを明示的に処理するには、次のようにします。

function C(a, b) {
  a = typeof a === 'undefined' ? DEFAULT_VALUE_A : a;
  b = typeof b === 'undefined' ? DEFAULT_VALUE_B : b;
}
136
Boopathi Rajaa

引数が未定義かどうかを確認する必要があります。

function func(a, b) {
    if (a === undefined) a = "default value";
    if (b === undefined) b = "default value";
}

この質問は 回答 になっていることにも注意してください。

12
jtbandes

私はそれがJavaScriptでそのように行われたのを見たことがありません。パラメータを省略した場合にデフォルト値が割り当てられるオプションのパラメータを持つ関数が必要な場合は、次のようにします。

 function(a, b) {
      if (typeof a == "undefined") {
        a = 10;
      }

      if (typeof b == "undefined") {
        a = 20;
      }

      alert("a: " + a + " b: " + b);
    }
5
tkahn
function func(a, b)
{
  if (typeof a == 'undefined')
    a = 10;
  if (typeof b == 'undefined')
    b = 20;
  // do what you want ... for example
  alert(a + ',' + b);
}

速記で

function func(a, b)
{
  a = (typeof a == 'undefined')?10:a;
  b = (typeof b == 'undefined')?20:b;

  // do what you want ... for example
  alert(a + ',' + b);
}
4

関数パラメータにデフォルト値を追加することはできません。しかし、あなたはこれを行うことができます:

function tester(paramA, paramB){
 if (typeof paramA == "undefined"){
   paramA = defaultValue;
 }
 if (typeof paramB == "undefined"){
   paramB = defaultValue;
 }
}
0
evilone