差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン 前のリビジョン 次のリビジョン | 前のリビジョン | ||
javascript:参照とコピー [2022/12/20 02:52] – baba | javascript:参照とコピー [2022/12/20 09:16] (現在) – [参照とコピー] baba | ||
---|---|---|---|
行 1: | 行 1: | ||
====== 参照とコピー ====== | ====== 参照とコピー ====== | ||
- | インターネットで調べると、jsにおいて参照渡しとコピーがあると名言されているものが多いですが、実際にはすべて参照渡しです。参照渡しとコピーで話をしたほうが理解が容易(振る舞いを覚えやすい)ということがありますが、このページでは正しい認識(参照のみで説明)をもつことを目指します。 | + | インターネットで調べると、jsにおいて参照渡しとコピーがあると明言されているものが多いですが、実際にはすべて参照渡しです。参照渡しとコピーで話をしたほうが理解が容易(振る舞いを覚えやすい)ということがありますが、このページでは正しい認識(参照のみで説明)をもつことを目指します。 |
===== 根本の理解 ===== | ===== 根本の理解 ===== | ||
行 63: | 行 63: | ||
===== 練習 ===== | ===== 練習 ===== | ||
では理解ができたところで、少し練習してみましょう。 | では理解ができたところで、少し練習してみましょう。 | ||
+ | <code .js> | ||
+ | var inputs = {x:1,y:2} | ||
+ | var a = inputs; | ||
+ | inputs.x = 10; | ||
+ | inputs.y = 11; | ||
+ | var b = inputs; | ||
+ | console.log(a, | ||
+ | </ | ||
+ | 上記のコードを修正して、a = {x:1,y:2}, b = {x:10, y: | ||
+ | 【正解】 | ||
+ | <code .js> | ||
+ | var inputs = {x:1,y:2} | ||
+ | var a = Object.assign({}, | ||
+ | inputs.x = 10; | ||
+ | inputs.y = 11; | ||
+ | var b = inputs; | ||
+ | // 後の処理を考えて、bもaと同様にObjectをコピーするようにしておくとよいでしょう。 | ||
+ | // var b = Object.assign({}, | ||
+ | console.log(a, | ||
+ | </ | ||