JavaScript の質問用スレッド vol.126 (307レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
196
(2): (ワッチョイ 3fd8-HeGF [240b:11:92e0:d400:*]) 2024/06/09(日) 04:17:47.61 ID:7bXOQjjM0(1/2)調 AAS
お願いします。
let test = [{id: 1,name: '太郎'},{id: 2,name: '二郎'},{id: 3,name: '三郎'}];
console.log(test); //forEach実行前
test.forEach((value) => {
delete value.id;
})

console.log(test); //forEach実行後

これを実行してlogを見ると

0:{name: '太郎'}
1:{name: '二郎'}
2:{name: '三郎'}

forEach実行後だけでなく実行前の値もオブジェクトのidプロパティが削除されていたのですが理屈がわかりません。

試しに配列ではなくて配列の中のオブジェクトをconsole.logで調べると
let test = [{id: 1,name: '太郎'},{id: 2,name: '二郎'},{id: 3,name: '三郎'}];
console.log(test[0]);
test.forEach((value) => {
delete value.id;
})
console.log(test[0]);

forEach前のオブジェクトにはidプロパティが存在して
forEach後には削除されている期待通りの結果になるのですが
どんな理屈なのかわかりません。

初歩的な質問で申し訳ありませんが教えてください
200: (ワッチョイ 3f12-HeGF [240b:11:92e0:d400:*]) 2024/06/09(日) 06:13:08.40 ID:7bXOQjjM0(2/2)調 AAS
>>198
ありがとうございます。
参照渡しがメモリ上のアドレスを参照してるのは知っていたのですが
初めのconsole.logをした時点ではまだ値を変更していないのに
なぜ変更後の値が表示されるのか理屈が分かりませんでした

>>197>>199
一度テキストに書いたものを貼ったので^^;お手数をおかけました
コンソール表示の仕様ですか、なんとなくですが納得できました
丁寧にありがとうございます。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s