ホームページ  >  記事  >  バックエンド開発  >  JavaScript で、連想配列 a を b に代入し、a の内容を変更すると、なぜ b も変更されるのでしょうか?

JavaScript で、連想配列 a を b に代入し、a の内容を変更すると、なぜ b も変更されるのでしょうか?

WBOY
WBOYオリジナル
2016-08-23 09:17:451906ブラウズ

リーリー

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 つになります。正しい答えは上に示されています。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。