質問: connection.query(query, kari) // 接続終了 connection.end(); }; ``` ここでは、aaa という変数を別の関数で利用したいと考えています。 変数を保持できる関数スコープの話や、グローバル変数等もネットで調べたりして色々試してみたのですが、このコードの関数外でconsole.logで出力しようとしても undefined とエラーを吐かれてしまいます。 どう改良すれば、aaaの値を引き渡すことができるのでしょうか? ご助言よろしくお願いします。
回答: JavaScriptやNode.jsは、通信系やFileIOなどのCPUが絡まない愚鈍な処理はコールバックを利用して待たずに流すという設計思想です。 なので`oya`関数は第一引数を`callback`のような名前の引数にして、 下記のようにコールバックを実行するように設計します。 ``` let aaa = rows[0].UserNO; console.log(aaa); callback(aaa); ``` あとはこんな感じで`aaa`を引数に取る関数を作って`oya`関数にぶち込めばおk ``` child = function(aaa) { console.log(aaa); } oya(child); ``` えっ、これ処理が増えると地獄にならね? そうです。 よく**コールバック地獄**と呼ばれる現象がこれです。 `JavaScript コールバック地獄`などと検索すれば回避策は色々出てきますので、一度調べてみてくださいね。