A
リーリーA2
リーリーB
リーリーC (クロージャを使用)
リーリー ###質問:###i
の値は何ですか? (1?)、時間が 3000 のままで、i
値と一緒に計算されないのはなぜですか? クロージャ (C) を使用した後も含めて、依然として 3000 ミリ秒ごとにポップアップします。
2. 3000
、console
ポップアップの違い、この違いは C クロージャ
にも反映されます。なぜこのような違いがあるのでしょうか?
JS のキュー実行構造を以前見たことがあり、setTimeout などの関数は他のコードが実行されるのを待ってから実行を開始する必要があることは知っていますが、setTimeout が複数ある場合は、その長さに応じて優先順位が付けられます。時間設定(設定時間が短くなります)を進めます)。なぜこれほどの違いがあるのか本当にわかりません、そしてまだ理解できません - -まだ 3 秒ごとに
consolenum*
を削除すると、一度に表示されます。乗算演算を行っていませんか?
setTimeout
每隔3000ms弹出一个的话,时间不应该是3000,6000,9000,12000吗,你是不是跟setInterval
搞混了。然后再说一点setTimeout(fn,time),这是个函数的执行,setTimeout的创建与主js是同步的(这个时候time的值就已经确定了),异步的是其中的fn的执行(执行的时候再去找内部的
i
或者num
は閉鎖などの影響を軽減します)。サイトでイベントループjsを検索すると、繰り返しの質問や説明がたくさんあるはずです。
setTimeout
的延迟是相对于你运行它的那一刻,你这个for
すべての遅延を一度にループして設定します。最初の遅延は現在時刻に対して 3 秒、2 番目は現在時刻に対して 6 秒、3 番目は現在時刻に対して 9 秒です。等々。結局、3秒ごとに出力に反映されてるんじゃないでしょうか…