1. ホーム
  2. javascript

[解決済み] JavaScriptのポインタ?

2023-04-26 13:39:02

質問

関数内の引数として、immutableな変数の参照を渡すことはできますか?

例を示します。

var x = 0;
function a(x)
{
    x++;
}
a(x);
alert(x); //Here I want to have 1 instead of 0

どのように解決するのですか?

JavaScriptはパラメータの参照渡しをサポートしていないので、代わりに変数をオブジェクトにする必要があります。

var x = {Value: 0};

function a(obj)
{
    obj.Value++;
}

a(x);
document.write(x.Value); //Here i want to have 1 instead of 0

この場合 x はオブジェクトへの参照です。 このとき x が関数に渡されると a に渡され、その参照は obj . このように objx はメモリ上で同じものを参照しています。 を変更すると Value のプロパティを objValue のプロパティに影響します。 x .

Javascriptは関数のパラメータを常に値で渡します。これは単に言語の仕様です。あなたは を作成する x を両方の関数にローカルなスコープで作成し、変数を全く渡さないことができます。