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

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

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

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

Q&A

解決済

2回答

727閲覧

Javascriptのオブジェクトの追加

takumil

総合スコア9

JavaScript

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

0グッド

0クリップ

投稿2021/05/20 03:42

以下のコードを実行すると
sample にも test2 の値が追加され書き変わってしまいます。

追加されないようにするにはどうすると良いのでしょうか?

JavaScript

1let sample = { 2 test: '123' 3}; 4 5let sample2 = sample; 6sample2.test2 = '456'; 7 8console.log(sample);

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

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

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

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

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

guest

回答2

0

ベストアンサー

「なぜそうなるか」は過去質問にあったと思います。

大目的がわかりませんが、オブジェクトじゃなくプロパティだけ代入するとか。

js

1let sample = {}; 2sample2.test = sample.test; 3sample2.test2 = '456'; 4 5console.log(sample); 6

投稿2021/05/20 03:55

m.ts10806

総合スコア80875

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

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

0

参照渡し?というワードに辿り着く事ができました。

投稿2021/05/20 04:13

takumil

総合スコア9

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

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

miyabi_takatsuk

2021/05/20 06:11

「参照渡し」関連の話にいくと、 かなり深いプログラミングの仕組みの部分まで遡ってしまうので、 今は、オブジェクトはそういう挙動なんだ、程度に留めた方がいいと思います。 ちなみに、JavaScriptには参照渡しという仕組みは存在しません。 そう言ったほうがわかりやすいということからか、そう呼称している方はかなり多いですが、 JavaScriptの参照の仕組みと、 参照渡しというものの仕組みは別物です。 (挙動は似ているようには見えるが)
takumil

2021/05/20 06:13

なるほどですね。ありがとうございます。
miyabi_takatsuk

2021/05/20 06:17

記事もそうですが、 コメントのやり取りがめちゃくちゃ参考になりますね。 「参照呼び出し」 これは的を射てそうな言い方な気が。
K_3578

2021/05/20 06:47 編集

https://qiita.com/raccy/items/d4c5e7995a8fc90109ee#crystal 参考程度にですがJavaScriptに限らずですけど「call by reference」以外を「参照渡し」と呼称している記事 なんかをまとめてる記事もあります。 つまり、これぐらい勘違いを起こしやすい問題なので 理解が及ばない内は「そういうもの」と捉えておいた方がいいかと。 ((2021/05/20 15:36)のZuishinさんの指摘を受けて表現を修正しました。)
miyabi_takatsuk

2021/05/20 06:48 編集

JSが一番記事数が多いのが笑えないですね。 一番初学者が触れそうな言語だからか・・・。 > 理解が及ばない内は「そういうもの」と捉えておいた方がいいかと。 これに賛成です。 質問者さんの理解レベルが高まったら、深く勉強してみる、がベストだと思います。
Zuishin

2021/05/20 06:36

そこに挙げられている記事は初心者の書いた記事ばかりなので、解釈が分かれるというのは疑問があります。
K_3578

2021/05/20 06:50 編集

>Zuishinさん 全部を確認した訳じゃなかったのですが、今さらっと見た感じどちらかというと、 初心者が誤解したまま備忘録として残してるのが多いですね・・・それだと「解釈」という 表現はおかしいですね、少し修正します。 (2021/05/20 15:47)のコメントに対して >miyabi_takatsukさん すいません、お手数お掛けします。
miyabi_takatsuk

2021/05/20 06:47

> 初心者の書いた記事ばかり 確かに、「あ、こんな風に動くんだ、記事にしたろ!」感が漂うもの多いですね。 解釈どうこうより、「あくまでそういう仕様」の話ですしね・・・。 K_3578さん > 合わせて、こちらのコメントも修正します!
m.ts10806

2021/05/20 07:36 編集

結局は「気に病まなくても、考えなくてもいいようなコードを組む」でいい気がします。 本件で言うと、オブジェクトまるごとコピーする必要があるのかどうかあたりから検討するとか。。 用途が別なら別途取得したほうが間違いがないようにも思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問