検索

ホームページ  >  に質問  >  本文

JavaScript は参照渡し言語ですか、それとも値渡し言語ですか?

<p>プリミティブ型 (数値、文字列など) は値によって渡されますが、オブジェクトはすべて値によって渡されるため不明です (この場合、オブジェクトを保持していると思われる変数は実際にはオブジェクトへの参照です)。参照渡し (オブジェクトの変数がオブジェクト自体を保持していると考える場合)。 </p> <p>最終的には問題ではありませんが、パラメーター受け渡し規約を提示する正しい方法は何なのか知りたいと思っています。これに関連するセマンティクスを定義する JavaScript 仕様からの抜粋はありますか? </p>
P粉450744515P粉450744515464日前527

全員に返信(1)返信します

  • P粉231112437

    P粉2311124372023-08-24 14:43:30

    JavaScript は楽しいです。次の例を考えてみましょう:

    リーリー

    これにより、出力が生成されます:

    リーリー
    • obj1 がまったく参照ではない場合、obj1.item を変更しても関数の外部の obj1 には影響しません。
    • パラメータが正しい参照であれば、すべてが変わります。
    • num100 となり、obj2.item"changed" となります。代わりに、num10 のままになり、obj2.item"unchanged" のままになります。
    代わりに、受信アイテムが値によって渡されるという状況になります。ただし、値によって渡される項目はそれ自体が参照です。 技術的には、これは

    共有通話 と呼ばれます。

    実際には、パラメータ自体 (

    numobj2 など) を変更しても、スコープへの入力には影響しないことを意味します。ただし、パラメータの inner を変更すると、上方向に伝播します (obj1 と同じ)。

    返事
    0
  • キャンセル返事