-3

例えば:

    function test(x) {
       alert("This is a " + x);
    }

    test("test");

正直言って要点がわかりませんが(おそらく、このテーマについてあまり知識がないためです)、少し説明していただければ素晴らしいと思います。

4

4 に答える 4

2

パラメータにより置換が可能になります。同じコードを何度も記述する代わりに、独自の値で再利用します。あなたの例では、この方法はあまり効果がないので、ほとんど利点がありません。

しかし、ほんの少しの調整で、それはより理にかなっているかもしれません:

function test(x) {
    var y = x * 2
    if (y === NaN) {
        alert("That was no number!");
    } else {
        alert("Multiplied by 2, " + x + " is " + y);
    }
}

そのコードを実行するたびに、値を置き換えて、それを書きたくはありません。

var y = "test" * 2
if (y === NaN) {
    alert("That was no number!");
} else {
    alert("Multiplied by 2, test is " + y);
}

var y = 5 * 2
if (y === NaN) {
    alert("That was no number!");
} else {
    alert("Multiplied by 5, test is " + y);
}

注:値は、フォーム、データベース、Webサービスなどから取得される場合があります。 この例では、ハードコーディングされていますが、実際には、この可能性は低くなります。

代わりにtest、関心のあるケースを処理するジェネリックコードであるメソッドを作成します。

次に、次のように書くことができます。

test("test");
test(5);

必要な変更がtestあった場合は、同じロジックを使用したコード内のすべての場所を見つけるのではなく、単一のメソッドを変更します。これにより、プログラムの保守とテストが容易になります。

于 2012-06-08T11:22:34.513 に答える
2

Javascript は関数のオーバーロードをサポートしていませんが、関数が呼び出されるたびargumentsに、関数宣言で名前が付けられていなくても、渡されたすべてのパラメーターの配列が変数に設定されます。例えば:

function prod() {
    var res = 1;
    for (var i = 0; i < arguments.length; i++)
        res *= arguments[i];
    return res;
}
var p = prod(5, 3, 7);    // => 105

注:arguments実際にはArrayオブジェクトではありません。つまり、同じ はありませんprototype。ただし、配列に簡単に変換できます。

var args = Array.prototype.slice.call(arguments, 0);
于 2012-06-08T08:36:56.483 に答える
2

JavaScript の呼び出しには、メソッド呼び出しパターン、関数呼び出しパターン、コンストラクター呼び出しパターン、apply 呼び出しパターンの 4 つのパターンがあります。ボーナス パラメータの初期化方法がパターンによって異なります。呼び出し演算子は、関数値を生成する任意の式に続く括弧のペアです。括弧には、コンマで区切られた 0 個以上の式を含めることができます。各式は、1 つの引数値を生成します。各引数値は、関数のパラメーター名に割り当てられます。引数の数とパラメータの数が一致しない場合、実行時エラーは発生しません。引数値が多すぎる場合、余分な引数値は無視されます。引数の値が少なすぎる場合、未定義の値が欠損値に置き換えられます。引数値の型チェックはありません。任意の型の値を任意のパラメーターに渡すことができます。

「JavaScript: Douglas Crockford の良い部分。Copyright 2008 Yahoo! Inc., 978-0-596-51774-8.」

于 2012-06-08T08:35:36.170 に答える
0

これは、ここでパラメータチェックなしで機能します

デモ

注:関数でそのパラメーターを使用している場合は、関数呼び出しで渡す方がよいでしょう。そうしないと、「未定義」のままになります...

最後の脳震盪

function test(a) 
{     
  alert(a); 
}  

test(1); // outputs 1 
test(); // outputs undefined 

引数の値を渡さない場合は、未定義に設定されます。例外はありません。特定の状況で関数をより用途の広いものにする便利な方法です。Undefined は false と評価されるため、値が渡されたかどうかを確認できます

于 2012-06-08T08:17:11.220 に答える