var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
// and store them in funcs
funcs[i] = function() {
// each should log its value.
console.log("My value: " + i);
};
}
for (var j = 0; j < 3; j++) {
// and now let's run each one to see
funcs[j]();
}
එය මෙය ප්රතිදානය කරයි:
මගේ වටිනාකම: 3
මගේ වටිනාකම: 3
මගේ වටිනාකම: 3
එය ප්රතිදානය කිරීමට මා කැමති නමුත්:
මගේ වටිනාකම: 0
මගේ වටිනාකම: 1
මගේ වටිනාකම: 2
සිදුවීම් ශ්රාවකයින් භාවිතා කිරීමෙන් ශ්රිතය ක්රියාත්මක කිරීම ප්රමාද වන විට එකම ගැටළුව ඇතිවේ:
var buttons = document.getElementsByTagName("button");
// let's create 3 functions
for (var i = 0; i < buttons.length; i++) {
// as event listeners
buttons[i].addEventListener("click", function() {
// each should log its value.
console.log("My value: " + i);
});
}
<button>0</button>
<br />
<button>1</button>
<br />
<button>2</button>
… හෝ අසමමුහුර්ත කේතය, උදා: පොරොන්දු භාවිතා කිරීම:
// Some async wait function
const wait = (ms) => new Promise((resolve, reject) => setTimeout(resolve, ms));
for (var i = 0; i < 3; i++) {
// Log `i` as soon as each promise resolves.
wait(i * 100).then(() => console.log(i));
}
සංස්කරණය කරන්න: එය ද පැහැදිලි වේ for in
හා for of
වළළු:
const arr = [1,2,3];
const fns = [];
for(i in arr){
fns.push(() => console.log(`index: ${i}`));
}
for(v of arr){
fns.push(() => console.log(`value: ${v}`));
}
for(f of fns){
f();
}
මෙම මූලික ගැටලුවට විසඳුම කුමක්ද?
funcs
සංඛ්යාත්මක දර්ශක භාවිතා කරන්නේ නම්, ඔබට අරාව වීමට අවශ්ය නැති බව ඔබට විශ්වාසද ? හිස ඔසවන්න.