質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

436閲覧

console.logで更新前の値を確認したい

nikuatsu

総合スコア177

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2022/05/23 14:32

編集2022/05/24 03:41

前提

オブジェクトを更新しても、更新の前後の値をコンソールで確認したいです。

該当のソースコード

JavaScript

1// 初期値 2const obj = {id:1}; 3 4// 確認 5// console.log( 'obj(初期値) = ', obj ); // この位置なら問題なく初期値が確認できる 6 7// 更新 8obj.id = 2; 9 10// 確認 11console.log( 'obj(初期値) = ', obj ); // この位置だと初期値でなく更新値になってしまう 12console.log( 'obj(更新値) = ', obj2 );

実現したいこと

コンソールで、初期値と更新値を次のように確認したいです。

console

1obj(初期値) = {id: 1} 2obj(更新値) = {id: 2}

発生している問題

しかし、次のように更新値だけになってしまいます。

console

1obj(初期値) = {id: 2} 2obj(更新値) = {id: 2}

試したこと

まず// この位置なら問題なく初期値が確認できるの位置では問題なく初期値が確認できました。

そのためその直後の行で// 別名で再代入して、それをコンソールに出したのですが、// やはり更新値になってしまうという状況です。

JavaScript

1// 初期値 2const obj = {id:1}; 3 4// 確認 5// console.log( 'obj(初期値) = ', obj ); // この位置なら問題なく初期値が確認できる 6const obj1 = obj; // 別名で再代入 7 8// 更新 9obj.id = 2; 10 11// 確認 12console.log( 'obj(初期値) = ', obj1 ); // やはり更新値になってしまう 13console.log( 'obj(更新値) = ', obj2 );

どのようにすれば、コンソールで、初期値と更新値を確認できるでしょうか?
ご回答宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kei344

2022/05/24 05:31

まだ質問が「受付中」になっていますが、「ベストアンサー」を選び「解決済」にされてはいかがでしょうか。
nikuatsu

2022/05/24 05:46

ありがとうございます。気が付きませんでした。
guest

回答2

0

ベストアンサー

ログ・デバッグ目的なら、JSON化した文字列をとっておくのも手ですね。

js

1const obj1 = JSON.stringify(obj);

投稿2022/05/23 22:06

int32_t

総合スコア20850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/05/24 03:39

これはなるほどな一手です。 オブジェクトで見たければ const obj1 = JSON.parse( JSON.stringify(obj) ); にすれば一行で済むし、分かり易いですね。 ありがとうございます。
guest

0

JavaScriptでのオブジェクトの代入は値ではなく参照のコピーになります。
つまり obj1objと同じオブジェクトを参照していることになります。
objのデータをobj1に複製したければ、objのプロパティを取り出してobj1のプロパティとしてセットする必要があります。Object.assignでそれができます。

JavaScript

1// objのプロパティをobj1にコピー 2let obj1 = {}; 3Object.assign(obj1, obj);

投稿2022/05/23 15:01

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nikuatsu

2022/05/24 03:40

オブジェクトの参照という意味だったのですね。基本的なところを抑えておりませんでした。原因を教えていただきありがとうございます。 Object.assignという解決策もばっちりでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問