プロプログラマ

プログラマーを職業としてます。 Flex,Air,C#,Oracle,HTML+JSの言語ノウハウを中心に情報発信していきます

[JavaScript] 関数の引数に省略値を(直接)指定できない

JavaScriptの実装をしていて関数定義の仕方を間違えたために、つまらないことで随分時間をかけてしまいました。
メモとして残します。
JavaScriptで自作関数を作った場合、以下の様な感じになります。

function testMethod(value1, value2)
{
alert('Test value1=' + value1 + ' value2=' + value2);
}
この時のvalue1、value2の引数に省略時の値を指定したいと思った場合
function testMethod(value1 = 10, value2 = 20)
{ ... }
のように書けば省略できるように思えますが、この記述はエラーとなります。
JavaScriptでは引数の省略はできないようです。
とはいえ、JavaScriptでは引数を省略して呼び出してもエラーとはなりませんので、
関数定義は、function testMethod(value1, value2) としておいて、
呼び出しの時に、
testMethod();
とすれば、問題なく実行ができます。
このとき、value1, value2はundefinedとなりますので、省略時初期値を指定したい場合は、関数内部で判定すればOKです。
function TestMethod(value1, value2)
{
if (value1 == undefined) value1 = 10;
if (value2 == undefined) value2 = 20;
alert('Test value1=' + value1 + ' value2=' + value2);
}

 

分かっていれば大丈夫ですが、PHPやC#などで慣れていると、ついつい関数定義内に省略値を記入してしまいます。
また、困ったことに間違った記述をしていても、FireFoxでは何事もなかったように動いてしまいます。
ここで気づかずにGoogleChromeやiPhoneのSafari上などで動作させると動かないため、あれ??となります。
全然気づかずに、なんで動かないんだろう?と数時間経過しました。。。。
これは、JavaScriptの記述全般に言えることかもしれません。
ものすごく初歩的なことですが注意しましょう。
VisualStudioなどの超便利なIDEに慣れきっているとダメですね。

 

== ランキングに参加しています。ぜひクリックお願いします ==

プログラム ブログランキングへ
にほんブログ村 IT技術ブログへ
にほんブログ村

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください