3

私は JavaScript の経験がほとんどありませんが、他のプログラミング言語では、関数内の欠落しているパラメーターのデフォルト値を設定するために次のことが可能です。

たとえば、関数があるとしましょう

function foo(a , b)
  return a + b 
{

上記の関数を 1 つのパラメーターまたは 2 つのパラメーターで呼び出せるようにしたいと考えています。

1 つのパラメーターの場合:

foo(2)   //a =2 and b would be automatically set to a default no argument value,

2 パラメータの場合:

foo(1,2)  // a = 1 , b = 2 => 3

これは、IE 8 互換の JavaScript または Jquery 1.7.2 を使用する JavaScript で可能ですか?

4

5 に答える 5

6

JavaScript 関数を使用すると、指定したよりも少ないパラメーターで関数を呼び出すことができます。

あなたが達成しようとしていることは、次のようなことをすることで可能です:

function foo(a , b){
  if(typeof b === "undefined"){
      b=3;
  }
  return a + b; 
}
foo(5);//return 3;

オペレーターに頼らず、確認undefinedすることを強くお勧めします。私は、その仮定を行い、または別の偽の値を渡すと失敗したコードのデバッグに何時間も費やしました。JavaScript の型システムは非常に扱いにくくなる可能性があります。たとえば、false です。||0"0"

ECMAScript Harmony (次のバージョン) では、他の言語と同様に、次の構文を使用してデフォルトのパラメーターを使用できます。

function foo(a , b=3){
  return a + b;
}

ただし、これは最初のバージョンのように IE8 では機能しません。

于 2013-03-08T00:24:39.810 に答える
3

はい、可能です。パラメータが渡されない場合、特別な値「未定義」が得られます。以下は私にとってはうまくいきます:

function foo(a, b) {
  a = a || defaultForA;
  b = b || defaultForB;

}

Javascript がブール値への変換を処理する方法により、上記のコード スニペットでは次のすべてが未定義と見なされます。

undefined
null
0
"" (empty string)
false

したがって、これらの値が重要な場合は、上記で使用されている「false でない場合」のブランケット テストではなく、undefined を明示的にテストする必要があります。

于 2013-03-08T00:24:18.073 に答える
3

いいえ、ただし、この効果は、3 番目の演算子または if ステートメントを使用して手動でシミュレートできます (必ず確認してくださいundefined!)。

function foo(a, b) {
    b = (typeof b === "undefined") ? 2 : b;

    return a + b;
}
于 2013-03-08T00:24:27.913 に答える
2

未定義のパラメーターは false として評価されるため、関数 foo の冒頭で次のようなことを行うことができます。

a = a || 0;
b = b || 0;

そうすれば、a または b が存在する場合、それらは独自の値で評価され、そうでない場合は 0 で評価されます。

于 2013-03-08T00:24:57.397 に答える
2

パラメータを受け取ったかどうかをテストすることができます:

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

「未定義」をテストすることにより、false と評価されるパラメーター (nullまたは""または または0などfalse)を受け入れることもできます。

于 2013-03-08T00:27:01.677 に答える