※ 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>
参考書籍はO'REILLY初めてのJavaScript第2版です
<script type="text/javascript">
//<![CDATA[
function alterArgs(strLiteral, aryObject) {
//渡された文字列の値を変更
strLiteral = '変更しました';
aryObject.push("three");
}
function testParams() {
var str = "オリジナルの文字列";
var ary = new Array("one","two");
document.writeln("<h3>呼び出し前の値</h3>");
document.writeln("strの値:" + str + "<br />" );
document.writeln("配列の各要素の値:" + ary + "<br />");
alterArgs(str,ary);
document.writeln("<h3>呼び出し後の値</h3>");
document.writeln("strの値:" + str + "<br />");
document.writeln("配列の各要素の値:" + ary + "<br />");
}
//]]>
</script>
/*----------実行結果-----------*/
呼び出し前の値
strの値:オリジナルの文字列
配列の各要素の値:one,two
呼び出し後の値
strの値:オリジナルの文字列
配列の各要素の値:one,two,three
/*----------以下、疑問です。----------*/
alterArgs(str,ary);の第1引数であるstrは「基本データ型(値呼び出し)」であるため
呼び出された側では、呼び出した側で使われていた変数の内容を変更することができません。
以下、基本データ型の引数に変更を加えたい場合は、
その変更後の値を戻り値として戻して変数に代入すれば、
呼び出し側でも変更を反映できるのですよね。
自分なりに幾度、打ち込んでみたものの以下のように
実行結果をかえることができません。
長くなりましたが回答の方、宜しくお願いします!!!
/*----------実行結果 ----------*/
呼び出し前の値
strの値:オリジナルの文字列
配列の各要素の値:one,two
呼び出し後の値
strの値:変更した
配列の各要素の値:one,two,three
お礼
オブジェクト型。 変更後の値を戻り値として戻すやり方について学習が必要と自覚しました。 回答ありがとうございます!!!