السلام عليكم قمت بكتابة كود لخوارزمية ترتيب النوم

ووجدت أن فكرتها جميلة بالفعل، هذا هو الكود var array=[9,1,7,5,2,4,8,6,0,1,3,2,5];

var array_of_functions= [
function(){console.log(0);},
function(){console.log(1);},
function(){console.log(2);},
function(){console.log(3);},
function(){console.log(4);},
function(){console.log(5);},
function(){console.log(6);},
function(){console.log(7);},
function(){console.log(8);},
function(){console.log(9);}
];
for(var i=0;i<array.length;i++)
setTimeout(array_of_functions[array[i]],array[i]*10);

ولكن كنت أرغب بكتابته بالشكل التالي:

   var array=[9,1,7,5,2,4,8,6,0,1,3,2,5];
for(var i=0;i<array.length;i++)
setTimeout(function(){console.log(array[i])},array[i]*10); 

فلم ينجح وظهر لي تحذير لكود

Don't make functions within a loop

فما سبب عدم عمل الكود، ولماذا لا يمكننا إنشاء تابع بداخل حلقة؟

وشكرًا