LoginSignup
3
0

More than 3 years have passed since last update.

クイズ-出力されるのは何でしょう?-

Posted at

もんだい

以下のA,Bではそれぞれ"OK"と"NG"のどちらが出力されるでしょうか?

javascript
text = ["OK"];
function hoge(array){
    array[0] = "NG";
    return array;
}

console.log(hoge(text)); // A
console.log(text); // B

こたえ

クリック!
出力
> ["NG"]
> ["NG"]

どっちも["NG"]が出力されます。
javascriptでは配列を引数にとると参照先が渡されるので、中身を直接操作することになります。

じゃあこれは?

javascript
text = ["OK"];
function hoge(array){
    array = ["NG"]; // ここだけ変更。
    return array;
}

console.log(hoge(text)); // A
console.log(text); // B

こたえ

クリック!
> ["NG"]
> ["OK"]

array = ["NG"];と代入した時点で参照先が変更されるため、元の配列には影響しません。

まとめ

要するにこれ↓読めばわかります。

【Javascript】値渡しと参照渡しについてあらためてまとめてみる https://qiita.com/migi/items/3417c2de685c368faab1

代入の形をとるか直接操作するかで結果が変わる。
その仕様がわからなくてめっちゃ詰んでたのでメモしました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0