somemo programming etc.

プログラマ、雑記、プログラミング関係はLinkから、数式はこっちでまとめていることが多い

【Javascript】与えられなかった引数の扱い

Javascriptの関数実行時に与えられなかった引数に関するメモです。

オーバーロード

関数の振る舞いを引数の数によって異なる、ということを示す言葉です。これを出すと大体何を言いたいのかが分かりやすいと思ったので出してみました。

結論から言うと、オーバーロードはありません。また、phpのように引数のデフォルト値を設定することもできません。与えられなかった引数の値は「undefined」となります。

引数の判別

undefinedになることは分かりましたが、どうやって判断するかが問題です。以下の二つの方法があります。

  • typeof 引数 == 'undefined'で設定されているかを判断する
  • arguments.lengthで引数の数を調べる

1つ目は、nullや空文字であったときと区別することができます。2つ目は単純に数を見て調べています。1つ足りないのであればいいですが、複数足りない場合は面倒かつ、そもそも引数自体を気にし過ぎなければならないインターフェースが間違っていると思うのでお勧めできないと思います。といいつつも、phpの場合、連想配列を想定している引数とデフォルトで用意している連想配列をマージするような方法を結構見ます。

使い分けとしては、引数の内容と、引数の数によって処理を判別するくらいだと思います。