LoginSignup
0
0

More than 1 year has passed since last update.

JavaScript returnとは 処理流れがいまいち分からない人向け

Posted at

return・・・戻り値、返り値と言われます。

結果:returnは仲介人

returnの処理流れ

       ① var array = [1,2,3,4,5,6,7,8,9,10];

       ④ function abc(arrayOrg) {
            // var _array = arrayOrg.concat();
        ⑤    for (var i =0; i < arrayOrg.length; i++) {
                arrayOrg[i] *= arrayOrg[i];
            }
         ⑥   return arrayOrg;
        }
       ② console.log(array);
       ③ console.log(abc(array));
       ⑦ console.log(array);

出力結果:
(3) [1, 2, 3]
(3) [1, 4, 9]
(3) [1, 4, 9]

上記のサンプルコードを用意しました。
Q:returnはどこに処理結果を戻しているでしょうか?
A:console.log(abc(array)); です。

処理順を①〜⑦をコード上に記載しました。

③console.log(abc(array));
→abc関数(配列の数字を倍にする処理)処理結果をコンソール出力しようとしています。
このタイミングで初めて、abc関数が呼ばれます。
④⑤処理で配列の数字を倍にした結果出ました。
その結果を、③ console.log(abc(array));にreturn(返す)します。

つまり、console.logで呼ばれた関数の処理結果を、
console.logに渡す仲介人がreturnということです。

補足①:例えば、returnをコメントアウトに

       ① var array = [1,2,3,4,5,6,7,8,9,10];

       ④ function abc(arrayOrg) {
            // var _array = arrayOrg.concat();
        ⑤    for (var i =0; i < arrayOrg.length; i++) {
                arrayOrg[i] *= arrayOrg[i];
            }
         ⑥ //  return arrayOrg;
        }
       ② console.log(array);
       ③ console.log(abc(array));
       ⑦ console.log(array);


//出力結果:
(3) [1, 2, 3]
undefined
(3) [1, 4, 9]

retrunをコメントアウトにしてみると、③ではabc関数処理が実行されますが、
コンソール出力結果は、undefinedが返ってきます。

補足②:⑦の出力結果は、意図しない。

②⑦は、同じ元の配列(①)を呼び出していますが、 ⑦は、③と同じ出力結果になっています。

関数型プログラミングでは、元の配列を書き換える行為は良くないです。

concat()を使って、配列のコピーを作成した上で、そのコピー配列の値で処理を実行して
処理結果を③に返しているだけです。そのため、元の配列は書き換えられずに済みました。

       ① var array = [1,2,3,4,5,6,7,8,9,10];

       ④ function abc(arrayOrg) {
            var _array = arrayOrg.concat();
        ⑤    for (var i =0; i < _array.length; i++) {
                _array[i] *= _array[i];
            }
         ⑥ //  return _array;
        }
       ② console.log(array);
       ③ console.log(abc(array));
       ⑦ console.log(array);


//出力結果:
(3) [1, 2, 3]
undefined
(3) [1, 4, 9]

0
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
0
0