2.5キャビネット
1515 ワード
エンクロージャ
function a() {
for (var i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i)
}, i * 1000);
}
}
a();
* 결과: 5, 5, 5, 5, 5
* 해결법은 var을 let으로 바꾸거나 즉시 함수를 사용한다
エラー発生の原因
解決策
function a() {
for (var i = 0; i < 5; i++) {
(function(j) {
setTimeout(() => {
console.log(i)
}, i * 1000);
})(i)
}
}
a();
各関数のi=0...settimeoutはバックグラウンドに格納される
function a() {
for (let i = 0; i < 5; i++) {
setTimeout(() => {
console.log(i)
}, i * 1000);
}
}
a();
Reference
この問題について(2.5キャビネット), 我々は、より多くの情報をここで見つけました https://velog.io/@spearjin/2.5-클로저テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol