これは100msごとに実行する必要がありますが、一度だけビープ音が鳴ります。なぜこの機能は1回だけ実行されますか?
私はsetIntervalについて知っていますが、これは私を混乱させます。
var test = function() {
console.log('beep')
setTimeout(test, 100);
}();
これは一度だけ実行され、永遠に実行されるのはなぜ分かりませんか?
これは100msごとに実行する必要がありますが、一度だけビープ音が鳴ります。なぜこの機能は1回だけ実行されますか?
私はsetIntervalについて知っていますが、これは私を混乱させます。
var test = function() {
console.log('beep')
setTimeout(test, 100);
}();
これは一度だけ実行され、永遠に実行されるのはなぜ分かりませんか?
匿名関数が実行されています。
名前付き関数式としてそれを宣言することができます。
(function test() {
console.log('beep')
setTimeout(test, 100);
})();
や代入後までの関数を呼び出す延期:
var test = function() {
console.log('beep')
setTimeout(test, 100);
};
test();
匿名ではないので、私はそこに 'var'を入れて、名前とすべてを与えました、巻上げはどうですか? (頭が爆発する)ありがとう!今私たちはこの答えのGoogleクエリの質問を理解することができた場合... – DigitalDesignDj
@DigitalDesignDjあなたのコードは "test"と呼ばれる変数を宣言し、直ちに呼び出される関数式の戻り値を代入します。コンパイラは既にそれが式であり、宣言ではないことを既に理解しているため、IIFEには角括弧は必要ありません。 (BTW、戻り値は定義されていませんが、ハニー・オッヒャー^ Htheコンパイラは気にしません) – Tibrogargan
@DigitalDesignDj割り当て操作後まで参照するための名前を持たないという意味で匿名です。あなたは['Function#name'](https://developer.mozilla)を読むことに興味があります。org/ja-ja/docs/Web/JavaScript/Reference/Global_Objects/Function/name)を参照してください。 – 4castle
OPは変数test
を関数の戻り値にしました。関数自体は返しませんでした。
あなたが行うことができます:それはtest
に割り当てられている前
var test = function(){
setTimeout(test,100);
};
test();
それとも
(function test() {
setTimeout(test, 100);
})();
'test'は関数ではありませんが、test()は明らかに失敗します。 – Tibrogargan
私はOPのコードで、匿名関数の戻り値を 'test'にしたと言っています。 – Shawn
おそらく、変更を推奨するものを表示するために編集する必要があります。私は理解していると思うが、あまり明確ではない。 – 4castle
リンク以下はこの
var test = function() {
console.log('beep');
}
setInterval(test, 300);
OPはsetIntervalを知っています。これは彼らの質問に答えるものではありません。 – 4castle
のように試してみてくださいは、すなわち解答が含まれています作成段階の後に実行段階が続きます。テスト変数は、関数が実行されるときに実行フェーズで未定義です。 https://m.youtube.com/watch?v=Bv_5Zv5c-Ts
ヒント: 'var test = function(){console.log( 'beep'); setTimeout(test、100);リターン「私は機能ではない」。 }(); console.log(test); ' – Tibrogargan
@ torazaburoおそらく同じことをする必要があります – Tibrogargan
"同じ "=コンソールで実行します。 'setTimeout(undefined、100) 'の呼び出しは残念ながらエラーを発生させません。 – Tibrogargan