ホームページ >バックエンド開発 >PHPチュートリアル >JavaScript で、連想配列 a を b に代入し、a の内容を変更すると、なぜ b も変更されるのでしょうか?
リーリー
JavaScript で、連想配列 a を b に代入し、その後 a の内容を変更すると、なぜ b も変更されるのですか?
JavaScript で、連想配列 a を b に代入し、その後 a の内容を変更すると、なぜ b も変更されるのですか?
配列 (文字列、整数、ブール値) などの非通常型の場合、代入はアドレスのコピーと同等です。つまり、a と b は同じアドレスを占有します。したがって、b が変更されると、a も変更されます。基本的に、a と b は同じものです。
この回答はより詳細です。配列は参照型の値であり、ヒープに保存されます。 https://www.zhihu.com/questio...
JS で値を割り当てるとき、元の型 (文字列など) はコピーされた値であり、参照型 (連想配列など) はコピーされた参照であると誰かが言っているのをインターネットで見ました。
リーリーJS 配列は、PHP が「コピーオンライト」宣言を使用した参照割り当てをサポートしているほど柔軟ではないと感じます。 リーリー
a と b は両方とも同じ配列を指しているためです。
変更しないでおきたい場合は、まずオブジェクトを文字列に変換し、次にオブジェクトに変換し直します。これらは 2 つの異なるオブジェクトになります。直接使用すると、実際には 1 つになります。正しい答えは上に示されています。