**コールバック関数とは、
特定の処理が終わってから実行される命令のこと。
と
コールバック関数とは引数の()内に書かれた関数のこと
上記二説あるのですがどちらが正しいのでしょうか?
コールバック関数とは引数の()内に書かれた関数のことということですが、
即時関数特有の最後に来る();関数が入っていてその関数を他の関数に渡す関数のことをコールバック関数というということでよいのでしょうか?
alert(関数);
ということも可能なのですね。
つまり関数は引数の中に入れられるのですね。
例
alert(関数1+1);
なら()内で関数が実行され(2)となり実行結果をalertが受け取り、
2と出る
alert(alert(2+5));
なら7とでる。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答4件
0
ベストアンサー
後発ですが、いままでの質疑応答を見ているとまだ解決していないようなので、参戦。
alert(alert(2+5));
この例は見た目だけで明らかにコールバック関数ではありません。
alert(2+5) という引数では、関数を渡しているのではなく、 alert を呼び出した結果を渡してしまっています。
コールバック関数は引数として渡した関数を呼び返してもらうものです。そのためには関数を引数に渡す必要があります。
具体的には関数名か function (x) {...}
というような名無しの関数を渡します。
もし、 alert をコールバックしてほしいなら、 alert の関数名のみを引数に渡す必要があります。
function f (callback) { callback("I call you!"); } f(alert)
これで、 "I call you" と画面に表示されるはずです。
特定の処理が終わってから実行される命令のこと
JavaScript でコールバック関数が多用されるのは処理が非同期に実行されるためです。しかし、コールバック関数自身は、非同期にならない場合でも使われるのでこの定義はおかしいと思います。
投稿2017/01/01 10:04
総合スコア3401
0
関数を引数で与えれば、それ即ちコールバック関数である
という認識はあやまりであります。
JavaScriptでいうと…
例えば、htmlで「onClick=」に指定する関数、
これもコールバック関数といえます。
あとは単純に
JavaScript
1var hoge = function() { 2 console.log('HOGE'); 3}; 4var piyo = function(callback) { 5 console.log('PIYO'); 6 callback(); 7}; 8// 呼び出しはこんな感じで 9piyo(hoge);
要するに、コールバック関数を指定する関数が
そのように実装されていないと意味はない
って話デス。
投稿2017/01/01 06:09
総合スコア7460
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
**コールバック関数とは、
特定の処理が終わってから実行される命令のこと。
と
コールバック関数とは引数の()内に書かれた関数のこと
上記二説あるのですがどちらが正しいのでしょうか?
どちらもコールバック関数の一面でしかなく、本質を記していません。
コールバック関数とは、他のコードの引数として渡される関数です。
その利用方法の一つが
・特定の処理が終わってから実行される命令(非同期処理の制御)
であり、表現の一つが
・引数の()内に書かれたもの
です。
合わせたものをコールバック関数と呼ぶのも正確ではありません。あくまで一面です。
投稿2017/01/01 05:45
退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/01 06:00
退会済みユーザー
2017/01/01 06:23
0
alert(alert(2+5))
なら、ブラウザの開発ツールを使えばその場で動作確認もできると思いますが、これは以下のように動作します。
- まず内側の
2+5
が計算される - そして、内側の
alert
が実行されて、「7」を表示する - 内側の
alert
の返り値はundefined
なので、それが外側のalert
に渡って「undefined」と表示される
ということで、これは単に関数の結果を別な関数に渡しているだけで、コールバックではありません。
コールバックは、「結果ではなく関数そのものを別な関数に渡すこと」です。もちろん、「渡しただけで全く実行しない」のではほぼ意味がありませんので、実用的には渡した関数が「あとから実行される」ことになります。
投稿2017/01/01 05:12
総合スコア145201
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/01 05:18
2017/01/01 05:19
退会済みユーザー
2017/01/01 05:21
2017/01/01 05:26
退会済みユーザー
2017/01/01 05:48
2017/01/01 05:54
退会済みユーザー
2017/01/01 06:01
2017/01/01 06:07
退会済みユーザー
2017/01/01 07:40
2017/01/01 07:46
退会済みユーザー
2017/01/02 00:09
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/01/01 12:04
2017/01/01 12:26
退会済みユーザー
2017/01/01 12:50
2017/01/01 13:34
退会済みユーザー
2017/01/02 04:51
2017/01/02 05:28
2017/01/02 06:49 編集
退会済みユーザー
2017/01/02 12:52
2017/01/03 00:03
退会済みユーザー
2017/01/03 00:52