Я новичок в Javascript и читаю часть Closures and Variables книги "JS для веб-разработчиков".Он приводит два примера:
function Func1() {
var result = new Array();
for (var i=0; i < 10; i++){
result[i] = function() {
console.log('i:'+i);
return i;
};
}
return result;
}
console.log(Func1());
function Func2() {
var result = new Array();
for(var i=0; i < 10; i++){
result[i] = function(num) {
return function() {
console.log('num:'+num);
return num;
};
}(i);
}
return result;
}
console.log(Func2());
В описании книги сказано, что в func1 каждая функция может возвращать 10, а в func2 каждая функция возвращает различное число.Но когда я запускаю код, он на самом деле возвращает:
[ [Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function],
[Function] ]
для обеих функций.
Так как распечатать фактические значения для каждой функции?И почему "console.log ('i:' + i);"не печатается в первой функции?