とほほのjavascriptで勉強しています。
http://www.tohoho-web.com/js/function.htm#objFun …
ここの
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では、このような書き方もできるということでしょうか。
No.1ベストアンサー
- 回答日時:
できます
JavaScriptでは関数の引数は
arguments
というオブジェクトに格納されます
つまり
function aaa( a0, a1) {
とした場合、常に
a0 == arguments[0]
a1 == arguments[1]
が成り立ちます
回答ありがとうございます。
関数の定義の引数の個数と、関数を呼び出す際の引数の個数が一致しないのは
javascriptではOKなんですね。
なんて簡便なんだろう。
引数がargumentsオブジェクトに格納されるという仕組みになっているのですね。
飲み込めました。
No.3
- 回答日時:
argumentsは慣れないと分かりづらいですね
きちんとかくとこんな感じです
<script>
window.goukei=function(){
var ans = 0;
var obj=arguments.callee;
for (var i = 0; i < obj.arguments.length; i++) {
ans += obj.arguments[i];
}
return(ans);
}
var sum = goukei(1, 2, 3, 4, 5);
alert(sum);
</script>
回答ありがとうございます。
今はまだjavascriptは未熟なので、提示してくださったコードを完全に理解
できないのですが、わかるようになるように、がんばろうと思います。
javascriptひととおり、飲み込んでから、再度、コードを読んでみます。
No.2
- 回答日時:
JavaScriptは引数をチェックしてくれない仕様になっています。
しかし、"arguments"というオブジェクト?があり、
これにより引数を管理する事ができます。
で、例題の場合は可変引数(引数で渡す値の数が自由に変えられる)のもので、
引数分だけループして合計すると言うものです。
回答ありがとうございます。
定義する側と、呼び出す側が一致していなくても、きちんとブラウザで実行されるので
あれ?と思ったら、そういうことだったんですね。
関数呼び出しで渡す引数の個数を、いろいろ変えられたら便利なんでしょうね。
今は、まだ未熟なので使いこなせないけど。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
イベントが初めの一回しか起き...
-
ASP.NETのコントロールの値をJa...
-
なぜmatchメソッドがエラーにな...
-
今度は全角が0.5で認識されてし...
-
パス付きサイトのjavascript解析
-
javaScript textareaの一行あた...
-
javascript パーティクルアニメ...
-
計算式を教えてください。
-
lengthが読めない理由が分からない
-
ジェネレーターの作り方
-
【西暦等の変換】
-
C#OpenCv V4にのエラーに関する...
-
JavaScriptの値を表示するには
-
C#で、ContextMenuStripに動的...
-
JavaScriptの時計の表示
-
イベント座標の取り方について
-
html javascript リンク先アド...
-
ASP.NET MVCでObjectをjsに渡す
-
このプログラムに王様の逃げ道...
-
JavaScriptで複数のCSVを取得し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C#OpenCv V4にのエラーに関する...
-
食材の期限を管理するためにGAS...
-
google apps scriptの終了のさせ方
-
このプログラムに、王手をかけ...
-
このプログラムに王様の逃げ道...
-
この将棋プログラムに王様ゲッ...
-
ASP.NETのコントロールの値をJa...
-
ジェネレーターの作り方
-
GASでundefinedエラーが出ます
-
なぜmatchメソッドがエラーにな...
-
ASP.NET MVCでObjectをjsに渡す
-
C#で、ContextMenuStripに動的...
-
html javascript リンク先アド...
-
HTMLで作った時報アプリが動き...
-
翌月を取得するGASが分かりません
-
イラレでナンバリングする方法
-
HTMLにWSHを組み込む
-
gas スプレッドシートがアクテ...
-
getElementByIdでASP.NETのText...
-
APIを使って埋め込んだグーグル...
おすすめ情報