• ベストアンサー

ユーザ関数で引数省略は可能ですか?

Javascriptの関数でデフォルト値は設定できますか? 下記の書き方ですと関数の呼出し側で、引数を省略した際 エラーになってしまいます。 test1(1,2); test1(1,2,3); test1(1,2,3,4); function test1(a,b,c=1,d=1) { alert (c); alert (d); }

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

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.2

JavaScriptでは、関数への引数の省略は問題なく行えますが、その際のデフォルト引数を設定する機能はありません。 ただ、引数が設定されなかった変数は「undefined」となっているので、それをチェックして自分で値を設定すれば、デフォルト引数の機能は実現できます。 function test1(a, b, c, d) {   if (c == undefined) c = 1;   if (d == undefined) d = 1;   alert(c);   alert(d); } こんなんで、どうでしょうか。

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

JavaScript の関数では、デフォルト引数というものがありません。 こういったあたりも「 Java と JavaScript は全くの別物である」という一例ですね。

関連するQ&A

  • JavaScriptの関数の引数省略について

    JavaScriptの関数で、下記のような引数の省略はできるでしょうか? 【例】 function hoge(aaa, bbb){} hoge(,"できるかな");←このような引数の省略はできるでしょうか? -------------------- しらべてみると、引数が2つあった場合、後方の引数の省略はできることがわかりました。 【例】 hoge("できるかな");←この場合できます。 しかし、引数が2つあった場合、前方の引数省略の例は見つけることができませんでした。 前方の引数を省略することはできるのでしょうか? よろしくお願いします。

  • ユーザ定義関数の引数省略について

    VBAで自分で関数を作成しているのですが、 引数を複数省略したいときはどうすれば良いでしょうか? 例えば、Test(A as integer, Optional B as integer =1, Optional C as integer =1)という関数で Test(1,0)と記述した時に"0"は引数BなのかCなのかどうやって指定するのでしょうか? それとも複数省略は出来ないのでしょうか?

  • 引数付自作関数において、引数を送らない場合について

    こんにちは。 makecolumn(a,b,c)という 自作関数があったとします。 ここで、 aとcにのみ、引数をおくり、 bは、デフォルト値を使いたいと 思います。 この場合、 makecolumn(30,,40) のようにすると、 どうも、エラーになってしまいます。 プログラム側では、 bの値について、 makecolumn=function(a,b,c){ if(b==null || b==''){ b=デフォルト値; } } としていますが、うまくいきません。 引数があるのに、空白で送ってきた場合に、 その状態を取得するには、 どうしたらいいのでしょうか。 よろしくお願いします。

  • Perlの関数の引数について詳細

    perlで引数に関することでわからないことがあるのですが、以下の状態で、実行した際に、$aは1が入るのはわかりますが、$bには具体的にどんな値が入っているのでしょうか? 引数が無い場合は、デフォルトで1をセットしたいです。 phpのvar_dump関数のようなものがPerlには存在すれば便利ですが、そういうものはあるのでしょうか? sub test{ my ($a, $b, $c, $d) = @_; } &test(1); あと引数の数を2つは必須にして、残りの引数(3つ目はデフォルトで1つ目の引数と同じ値になり、4つ目以降はデフォルトで1となる 関数のプロトタイプを書きたいのですが、どうですればよいのでしょうか? sub test($$;@  ?のようなものを見たことがあるのですが、どんな意味をしているのでしょうか?結構複雑な引数を持たせることができそうなのですが、詳しく書かれている本などご存知の方教えてください。

    • ベストアンサー
    • Perl
  • php 省略可能な引数配列を持つ関数の作り方

    phpの関数で、省略する引数の右側の引数は全て省略しないといけませんが、連想配列を用いて、省略する順番が不確定で、必要な引数のみを設定して、省略したものはデフォルト値を使用するような関数を作るにはどのようにすればいいでしょうか。 ご教授のほどよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • ユーザ定義関数にデフォルト引数を複数指定する場合の謎。

    いつもお世話になっております。 環境/PHP5 質問内容は単純です。 //ユーザ定義関数を作成 function MyFunc($a,$b,$c=3,$d=4,$e=5){ //処理 } MyFunc(1,2);//$c,$d,$eにはそれぞれデフォルト値が格納される MyFunc(1);//$bの引数が与えられていないのでエラー MyFunc(1,2,100);//$cはデフォルト値ではなく100を優先して格納 $d,$eはデフォルト値 ↑ここまでは分かるのです。 謎なのは、以下です。 MyFuncに与える引数を、 $a=1 $b=2 $c=デフォルト値 $d=200 $e=デフォルト値 としたい場合、 MyFunc(1,2,,200,);//(1)雰囲気ではコレ。でも、これはエラーでしょう。 MyFunc(1,2,3,200);//(2)$cのデフォルト値を手入力($cのデフォルト値が生きてない。$eのみ、デフォルト値を自動格納) 正しいのは、やはり(2)の方法となりますでしょうか。 デフォルト値を設定していても、 上記のようなケースでは、 わざわざデフォルト値を手打ちしなきゃならない、 そんな言語仕様なのでしょうか。 なんとなく違和感を感じましたので、質問をさせて頂きました。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 引数なしの関数で疑問です

    とほほのjavascriptで勉強しています。 http://www.tohoho-web.com/js/function.htm#objFunction ここの function goukei() { var ans = 0; for (i = 0; i < goukei.arguments.length; i++) { ans += goukei.arguments[i]; } return(ans); } sum = goukei(1, 2, 3, 4, 5); goukei関数を定義したときの引数は、なしなのに goukei関数を呼び出すとき、goukei(1, 2, 3, 4, 5)と、このように5つも引数を指定しています。 Javaでは、こんな呼び出し方をすれば、コンパイルエラーになりますよね。 javascriptでは、引数なしで関数を宣言しても、呼び出すときに、好きな個数の引数を渡せるのですか? 「javascript 引数 省略」とか、「javascript 引数なし」とかいろいろググッてみたのですが 肝心の、javascriptでは引数なしにして宣言しても、呼び出すとき、好きな個数の引数つけて呼び出しても大丈夫。みたいな、確認したい記述はみつかりませんでした。 javascriptでは、このような書き方もできるということでしょうか。

  • javascriptの関数に引数を一個以上(不特定)渡したい

    javascriptの関数に引数を渡したいのですが、普通は値を渡す時、 function quotation(a,b) { alert(a+b); } <a href="#" onMouseover="quotation(12,13)">12+13</a> のようにすると思いますが、関数に値を渡す所の引数に「2個の値を渡す」とは決まっておらず例えば、4個値を渡すこともあれば、1個だけ値を渡すこともあるというプログラムを作りたいと考えています(必ず、1個以上の値を渡したいと思っております)。 このように、何個値を渡すか確定できていないときに柔軟に処理できるようにすることは、javascriptでは可能ですか?可能であれば、どのようにするのかやり方を教えてください。

  • 関数の引数に引数を持つ関数を入れたい場合はどうすればよいのでしょうか。

    関数の引数に引数を持つ関数を入れたい場合はどうすればよいのでしょうか。 function hoge(m, l, p, h) {} (中身は省略しています。) この関数の引数「h」にhtmlを代入しようとしています。 そのhtmlには、WindowOpen()があり、そのまま代入すると「")"がありません」 エラーが発生するのですが、これは無茶なことなのでしょうか。 なんとか解決方法があれば教えていただけませんでしょうか。 「"」の時のように「\"」ではだめだったので行き詰っています。

  • 関数ポインタについて

    関数ポインタを使用する際に、 指定する先の関数でデフォルト引数が指定されている場合、 関数ポインタを用いて、その引数を省略して呼び出すことはできるのでしょうか? 以下例とします。 void function(int a = 10){}; typedef void (*test)(int a); test a = &function; a(); //このように呼び出したい

専門家に質問してみよう