JavaScriptでコールバック関数の勉強をしています。その過程で、「コールバックとは何か」「そもそも関数とは何か」という壁に当たり、今一度それらの理解をきっちりしようと思いました。
そこで、質問なのですが、
コールバックおよびコールバック関数について、その意味は以下のような説明で合っていますか?
ご回答よろしくお願いします。
###コールバックとは
コールバックとは、関数呼び出しの意味である。
関数名の後に続けて()と書くと、言語処理系はそれをもって「関数呼び出し(コールバック)が発生した」と判断し、
問答無用でその関数を実行する。
関数名()
コールバック関数を書く際に、引数の関数に()を書いてはいけないのはそのためである。
しかし、()を書いてもコールバック判定されないケースがある。それは、
関数を定義する時である。
つまり
function myFunc(){…}
や
function(){…}
と書いた時は、コールバックが生じない。
だから、もしコールバック関数に引数を指定したい時など、どうしても()を記述しないといけない時は、
doSomething(function(){ myCallback();//被コールバック関数 });
と書けば良い。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
同じことの繰り返し
真面目に回答する事も考えましたが、また同じ事の繰り返しになるのが目に見えています。
WeilSpinor さんがPromiseの質問をしたのが3週間前。この時に私は回答で「コールバック関数」に触れました。
この時、WeilSpinor さんは多くの誤解をしていて、回答でそれらを指摘しましたが、解決済みにはせずにずっと放棄され続け、今も放置されています。
そして本質問で「コールバック関数の質問」をしましたが、その質問も間違いだらけでした。
他の多くの質問も同様であり、相当数の質問が「解決済み」になっていません。
ここで質問に回答したとして、おそらく、WeilSpinor さんはその回答からも多くの誤解をし、また別の質問をする未来が私には見えます。
ひょっとしたら、解決せずに放置するかもしれません。
問題に対して、もっと真摯に取り組んでください
質問を解決せずに放置することは、回答してくれる方に失礼です。
右も左も分からない状態で質問しないでください
私の経験上、良い質問は、「全体の9割を理解しており、残り1割が理解出来ない」という具合のものです。
私が今までWeilSpinorさんを見たところでは、全体の7割以上は理解できていない状態で質問しているように見受けられます。
この状態で回答をもらってもWeilSpinorさんが回答を理解することは出来ません。
もっと優しい問題からチャレンジして下さい。
どれぐらい優しいかというと、全体の9割を理解できる難易度の課題です。
何も分からないのなら、自分で理解できる程度に平易な説明のあるチュートリアル風の書籍を一冊買って、完全に理解できるまで何度でも読み直し、コードを書いてください。
(2019/03/30 22:57追記)
※下記の私のコメントでも「課題への取り組み方」に触れています(この質問も放置されていますが)。
Re: WeilSpinor さん
投稿2019/03/30 13:46
編集2019/03/30 13:57総合スコア18166
0
ベストアンサー
コールバックとは、関数呼び出しの意味である。
いいえ。
ひとことで言うと、引数に関数を渡して、それを実行させることにより結果を戻させる処理です。その時に渡される関数を「コールバック関数」と呼びます。
コールバック関数を書く際に、引数の関数に()を書いてはいけないのはそのためである。
まあ、そうですね。
しかし、()を書いてもコールバック判定されないケースがある。それは、
関数を定義する時である。
うーん、まあ、そうですね。
だから、もしコールバック関数に引数を指定したい時など、どうしても()を記述しないといけない時は、……と書けば良い。
うーん、まあ、そうですね。言葉の使い方は引っかかりますが。
というか、コールバックを理解せずに Promise を学ぼうとしていたのは、だいぶ回り道でしたね。
ほとんど理解できなかったでしょう?
JavaScript - 【JavaScript】Promiseオブジェクトとdoneとは、一言で言って何ですか?|teratail
コールバックが理解できれば、Promise の理解に一歩近づくと思います。がんばってください。
投稿2019/03/30 13:15
編集2019/03/30 13:18総合スコア36134
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/30 14:40
2019/03/30 14:44
2019/03/30 14:52
2019/03/30 15:03
2019/03/30 15:07
2019/03/30 15:13
2019/03/30 15:25 編集
2019/03/30 15:33
2019/03/30 15:51
2019/03/30 15:54
2019/03/30 15:57
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/03/30 14:40