• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:引数の数によって関数の動作を変えるには?)

引数の数によって関数の動作を変えるには?

このQ&Aのポイント
  • 引数の数に応じて関数の動作を変える方法を検討しています。
  • 特定のブラウザでのみ動作する関数を定義し、異なるブラウザで利用する目的です。
  • オブジェクトや配列を渡す方法は使用できず、他の解決策を模索しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

arguments.length

think49
質問者

お礼

babu_babooさん、回答早いです…。 あっという間に解決いたしました。 ありがとうございました! <script type="text/javascript"> function helloWorld(){  switch(arguments.length){   case 1:    alert(arguments[0] + ', World!');    break;   case 2:    alert(arguments[0] + ', ' + arguments[1] + '!');    break;   default:    return false;  } } helloWorld('Hello'); // Hello, World! helloWorld('Hello', 'OKWave'); // Hello, OKWave! </script> arguments - MDC https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference/Functions/arguments JavaScript講座 : 関数のパラメータ http://www.openspc2.org/JavaScript/kouza2007/function/parameter/index.html

think49
質問者

補足

一番早くに arguments の回答を下さったbabu_babooさんをベストアンサーにさせていただきます。 steel_grayさんの第二引数を省略してcallできるという回答も参考になりました。 旧システムであれば、次点を差し上げたいぐらいです。 ありがとうございました!

その他の回答 (1)

  • steel_gray
  • ベストアンサー率66% (1052/1578)
回答No.2

argumentsのlengthを参照する http://www.openspc2.org/JavaScript/kouza2007/function/parameter/index.html または単純に function helloWorld(hello , world){~} call元で第二引数が省略されていれば world はundefinedになるだけですから f(!world){ world = 'World'; } も成立します。

think49
質問者

お礼

ありがとうございます。 > call元で第二引数が省略されていれば world はundefinedになるだけですから call元で第二引数を省略したらエラーになると思いこんでいましたが、省略してもcallできるんですね…。 新たな発見でした。 <script type="text/javascript"> function helloWorld(hello , world){// 第二引数は省略しても良い if(!world){ world = 'World'; } alert(hello + ', ' + world + '!'); } helloWorld('Hello'); // Hello, World! (第二引数を省略してcallする) </script>

関連するQ&A

専門家に質問してみよう