2019-06-12

納得いかいから詳しい人教えて

masuda_array = ["パンティー"];
function hoge(array){
    array = ["うんち"];
    return array;
}
console.log(hoge(masuda_array)); // ["うんち"]
console.log(masuda_array); // ["パンティー"]

masuda_array = ["パンティー"];
function hoge(array){
    array[0] = "うんち";
    return array;
}
console.log(hoge(masuda_array)); // ["うんち"]
console.log(masuda_array); // ["うんち"]

なんでこの二つで動作が変わるの?

  • 実行したらその通りになってびびった

    • arrayが指す先をうんち配列にポインタ切り替えてるだけじゃん

  • 上はarrayの示す参照先が変わっただけで、masuda_arrayの内容は変わってない。 下はarrayの指し示す配列(=masuda_array)の中身を変える命令を実行してるから、masuda_arrayの内容は変わってる。

    • 代入する命令と中身を変える命令だと根本から違うわけか、というか引数にとった時点では参照先はそのままなんだ ありがとう めっちゃ詰まった

記事への反応(ブックマークコメント)

ログイン ユーザー登録
ようこそ ゲスト さん