プリミティブ型 (数値、文字列など) は値によって渡されますが、オブジェクトはすべて値によって渡されるため不明です (この場合、オブジェクトを保持する変数は実際にはオブジェクト参照のペアであると考えられます) ) および参照渡し (オブジェクトの変数がオブジェクト自体を保持していると考える場合)。
最終的にはどうでもいいのですが、パラメータの受け渡し規約をどのように表現するのが正しいのか知りたいです。これに関連するセマンティクスを定義する JavaScript 仕様からの抜粋はありますか?
JavaScript は楽しいです。次の例を考えてみましょう:
これにより、出力が生成されます:
がまったく参照ではない場合、
を変更しても関数の外部の
には影響しません。
は
となり、
となります。代わりに、
のままになり、
" のままになります。
共有通話 と呼ばれます。
num や obj2 など) を変更しても、スコープへの入力には影響しないことを意味します。ただし、パラメータの inner を変更すると、上方向に伝播します (obj1 と同じ)。
や
など) を変更しても、スコープへの入力には影響しないことを意味します。ただし、パラメータの
と同じ)。
JavaScript は楽しいです。次の例を考えてみましょう:
これにより、出力が生成されます:
リーリーがまったく参照ではない場合、
obj1.itemを変更しても関数の外部の
obj1には影響しません。
は
100となり、
obj2.itemは
"changed"となります。代わりに、
numは
10のままになり、
obj2.itemは
"unchanged" のままになります。
共有通話 と呼ばれます。
実際には、パラメータ自体 (num
や
obj2など) を変更しても、スコープへの入力には影響しないことを意味します。ただし、パラメータの
inner を変更すると、上方向に伝播します (obj1と同じ)。