質問: 0 } } ``` どちらのメソッドもプロパティの値に変更を加えますが、何か違いはあるのでしょうか?引数に渡した配列やobjectに変更を加えるのはマズかった気もしますが、理由がわかってません。
回答: > > どちらのメソッドもプロパティの値に変更を加えますが、何か違いはあるのでしょうか? > > > ご提示いただいたコードはどちらも同じオブジェクトなので、 **同じオブジェクトに対して変更を加える**という点で違いはないです。 引数を受け取る場合、基本的にどんなオブジェクトでも値を扱えます。 (nilに代入するとかそういうエラー的状況は除く) つまりはインスタンス変数などに限らず扱えるということになります。 対して引数を受け取らない場合、外の変数は基本的に扱うことができません。 (グローバル変数は除く) インスタンス変数ないしはクラス変数などへ特定の操作のみを行う場合はこちらが良いでしょう。 > > 引数に渡した配列やobjectに変更を加えるのはマズかった気もしますが、理由がわかってません。 > > > まずいということはないですが、注意が必要なのは確かです。 オブジェクトは参照渡しとなるので、値のコピーは行われません。 一時的に計算のために値を変えるということをしてしまうと、元の方にも影響が出ます。