- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:JavaScript値呼び出しと参照呼出し)
JavaScript値呼び出しと参照呼出し
このQ&Aのポイント
- <p>JavaScriptの値呼び出しと参照呼び出しについての質問です。提供されたコードの関数alterArgsの第一引数であるstrは基本データ型(値呼び出し)であり、呼び出された側で変数の内容を変更することができません。基本データ型の引数に変更を加えたい場合は、戻り値として値を返して変数に代入する必要があります。</p>
- <p>具体的な実行結果は以下の通りです。</p><p>呼び出し前の値:<br>strの値: オリジナルの文字列<br>配列の各要素の値: one, two</p><p>呼び出し後の値:<br>strの値: オリジナルの文字列<br>配列の各要素の値: one, two, three</p>
- <p>上記の実行結果から分かるように、提供されたコードでは基本データ型の引数を変更しても、呼び出し側で変更が反映されません。変更を反映させるためには、戻り値を利用して呼び出し側で値を更新する必要があります。</p>
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
javascriptでは基本データ型は値呼出しで、オブジェクト型は参照呼出しとかいてませんか? したがって値を引き継ぐなら文字列型の代わりにオブジェクト型に変えるだけでいけます <script type="text/javascript"> function alterArgs(strLiteral, aryObject) { strLiteral.str = '変更しました'; aryObject.push("three"); } function testParams() { var obj = {"str":"オリジナルの文字列"}; var ary = new Array("one","two"); document.writeln("<h3>呼び出し前の値</h3>"); document.writeln("strの値:" + obj.str + "<br />" ); document.writeln("配列の各要素の値:" + ary + "<br />"); alterArgs(obj,ary); document.writeln("<h3>呼び出し後の値</h3>"); document.writeln("strの値:" + obj.str + "<br />"); document.writeln("配列の各要素の値:" + ary + "<br />"); } testParams() </script> また、場合によってはalterArgs()からの戻り値にstrLiteralしてみたり グローバル変数をつかったりという手もあるでしょう
お礼
オブジェクト型。 変更後の値を戻り値として戻すやり方について学習が必要と自覚しました。 回答ありがとうございます!!!