- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数の引数とグローバル変数について)
関数の引数とグローバル変数について
このQ&Aのポイント
- JavaScript初心者の方が関数の引数とグローバル変数について質問しています。具体的には、グローバル変数の値を関数で処理し、コンソールログに表示するソースの管理方法について悩んでいます。一部のコードを変更したものを紹介し、加算がうまくいかないエラーについても相談しています。
- 質問者は、コードを短くしたいと考えており、そのために関数の引数にグローバル変数を指定したいと思っています。しかし、現在のコードでは加算が正しく動作していないようです。質問者は効率的な方法を教えていただきたいと思っています。
- プログラミングを始めたばかりの質問者は、自身のコードが正しいかどうかわからないと述べています。そのため、アドバイスやご教授を求めています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
new使ってる意味がほとんど無いですよね。 特に前者のソースはnew不要でただの関数呼び出しで良いと思うけど、 意味分かって使ってますか? (後者もaplusを毎回作っているあたりが、何だかなあという感じ。) > 関数の引数にはグローバル変数を指定することができないのでしょうか? 指定できているはずですよ。 var a = 1; とかに変えれば挙動も変わるはず。 グローバル変数が変化しないのは 引数で渡された時点で変数の内容がコピーされているのだから変化しないのは当たり前。 以下のコードでaが変化しない理由と同じです。 var a = 0; var b = a; b++; //aは当然0のまま。 単にカウンタがたくさん欲しいだけなら、私なら(連想)配列の要素にします。 <script> var counter = { a: 0, b: 0, c: 0 }; function show (counter_id) { counter[counter_id]++; console.log(counter_id + ":" + counter[counter_id]); } </script> <input type="button" value="a" onclick="show('a')"> <input type="button" value="b" onclick="show('b')"> <input type="button" value="c" onclick="show('c')">
お礼
独学で意味も分からず色々使ってしまっているのでnewについてもあまり理解していませんでした。aplusの多様は完全に入力ミスでした。すいません。 ソース自体が分かりづらい中、質問にお答えいただき本当にありがとうございます。 お答えいただいた方法で試してみたところうまく動作することができました。連想配列を使われていて、自分のかいたソースよりすごくシンプルで分かりやすいかったです。 グローバル変数の疑問も解決しました。 ありがとうございました。