例えば:
function test(x) {
alert("This is a " + x);
}
test("test");
正直言って要点がわかりませんが(おそらく、このテーマについてあまり知識がないためです)、少し説明していただければ素晴らしいと思います。
例えば:
function test(x) {
alert("This is a " + x);
}
test("test");
正直言って要点がわかりませんが(おそらく、このテーマについてあまり知識がないためです)、少し説明していただければ素晴らしいと思います。
パラメータにより置換が可能になります。同じコードを何度も記述する代わりに、独自の値で再利用します。あなたの例では、この方法はあまり効果がないので、ほとんど利点がありません。
しかし、ほんの少しの調整で、それはより理にかなっているかもしれません:
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
あった場合は、同じロジックを使用したコード内のすべての場所を見つけるのではなく、単一のメソッドを変更します。これにより、プログラムの保守とテストが容易になります。
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);
JavaScript の呼び出しには、メソッド呼び出しパターン、関数呼び出しパターン、コンストラクター呼び出しパターン、apply 呼び出しパターンの 4 つのパターンがあります。ボーナス パラメータの初期化方法がパターンによって異なります。呼び出し演算子は、関数値を生成する任意の式に続く括弧のペアです。括弧には、コンマで区切られた 0 個以上の式を含めることができます。各式は、1 つの引数値を生成します。各引数値は、関数のパラメーター名に割り当てられます。引数の数とパラメータの数が一致しない場合、実行時エラーは発生しません。引数値が多すぎる場合、余分な引数値は無視されます。引数の値が少なすぎる場合、未定義の値が欠損値に置き換えられます。引数値の型チェックはありません。任意の型の値を任意のパラメーターに渡すことができます。
「JavaScript: Douglas Crockford の良い部分。Copyright 2008 Yahoo! Inc., 978-0-596-51774-8.」
これは、ここでパラメータチェックなしで機能します
注:関数でそのパラメーターを使用している場合は、関数呼び出しで渡す方がよいでしょう。そうしないと、「未定義」のままになります...
最後の脳震盪
function test(a)
{
alert(a);
}
test(1); // outputs 1
test(); // outputs undefined
引数の値を渡さない場合は、未定義に設定されます。例外はありません。特定の状況で関数をより用途の広いものにする便利な方法です。Undefined は false と評価されるため、値が渡されたかどうかを確認できます