質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

6332閲覧

javascriptでの関数間の変数引き渡しについて

seventhencore

総合スコア22

Electron

Electronは、HTML5とNode.jsというWebの技術を用いてデスクトップアプリケーションを作成できるクロスプラットフォームな実行環境です。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2017/03/06 15:05

javascriptでMysqlと接続し、データの参照、書き換え等を行いたいと思っています。

Node.jsのモジュールを利用しており、データを取り出す(console.logで出力する)ところまではできております。
この取り出した値を、次のクエリを投げる関数に引き渡したいのですが、うまく渡すことができないまま2週間悩んでおります。

javascript

1var haha = function oya(){ 2 var mysql = require('mysql'); 3 4 const connection = mysql.createConnection({ 5 host : 'localhost', 6 user : 'root', 7 password : '*******', 8 database: 'Sample' 9 }); 10 11 // 接続 12 connection.connect(); 13 14 // userdataの取得 15 let UNO = "3434"; 16 let query = 'SELECT UserNO FROM `electronSample` where ID = "'+ UNO +'";'; 17 let kari = function (err, rows, fields) { 18 if (err) { 19 console.log('err: ' + err); 20 } 21 let aaa = rows[0].UserNO; 22 console.log(aaa); 23 }; 24 25 let tama = connection.query(query, kari) 26 27 // 接続終了 28 connection.end(); 29};

ここでは、aaa という変数を別の関数で利用したいと考えています。
変数を保持できる関数スコープの話や、グローバル変数等もネットで調べたりして色々試してみたのですが、このコードの関数外でconsole.logで出力しようとしても undefined とエラーを吐かれてしまいます。
どう改良すれば、aaaの値を引き渡すことができるのでしょうか?
ご助言よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

JavaScriptやNode.jsは、通信系やFileIOなどのCPUが絡まない愚鈍な処理はコールバックを利用して待たずに流すという設計思想です。

なのでoya関数は第一引数をcallbackのような名前の引数にして、
下記のようにコールバックを実行するように設計します。

JavaScript

1 let aaa = rows[0].UserNO; 2 console.log(aaa); 3 callback(aaa);

あとはこんな感じでaaaを引数に取る関数を作ってoya関数にぶち込めばおk

JavaScript

1child = function(aaa) { 2 console.log(aaa); 3} 4oya(child);

えっ、これ処理が増えると地獄にならね?

そうです。
よくコールバック地獄と呼ばれる現象がこれです。

JavaScript コールバック地獄などと検索すれば回避策は色々出てきますので、一度調べてみてくださいね。

投稿2017/03/07 09:41

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seventhencore

2017/03/14 11:22

遅くなってしまってすみません。 教えていただいたこと元に、やりたいことができました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問