私の質問は、なぜ関数の結果がブラウザのforループの前に表示されるのですか?ループ(1、2、3、4、5)のために実行する必要がありますが、最初に( 'cool'と1!2!3)を実行するので、コードとコンソールの結果を追加します。誰かがこの行動を私に説明できるなら、とても感謝しています。重複しているわけではありません。私はそれがどのように機能するのか理解したいのです。提案された質問には、最初にsetTimeoutを使ってループを実行するソリューションがありますが、動作を完全に説明することはできません。他の後のコード1のブロックを実行して動作するJavaScriptforループの実行前に関数の結果が表示される
// Loops + Closure
for (let i = 1; i <= 5; i++) {
setTimeout(function timer() {
console.log(i)
}, i * 1000)
}
//Modules
function CoolModule() {
let something = 'cool'
let another = [1, 2, 3]
function doSomething() {
console.log(something)
}
function doAnother() {
console.log(another.join('!'))
}
return {
doSomething: doSomething,
doAnother: doAnother
}
}
let foo2 = CoolModule()
foo2.doSomething() // 'cool'
foo2.doAnother() // 1 ! 2 ! 3
forループは有効期限が切れるまで何も出力しないタイマーの束を起動するので、なぜあなたは何か違うことを期待しているのか分かりません。 –
それは明白ではありませんか? 'setTimeout'は1秒の遅れで始まります。残りのコードは1秒未満で実行されます – Amy
setTimeoutは何かを混乱させる可能性がありますか?実行をブロックしません。 –