Я в настоящее время обучения JavaScript из следующей книги «JavaScript: The Good Parts - O'Reilly Media», в котором говорится следующее:Javascript Закрытие С массивом Узлов
Важно понимать, что внутренняя функция имеет доступ к реальным переменным внешних функций и не копии для того, чтобы избежать следующей проблемы:
// BAD EXAMPLE
// Make a function that assigns event handler functions to an array of nodes the
wrong way.
// When you click on a node, an alert box is supposed to display the ordinal of the
node.
// But it always displays the number of nodes instead.
var add_the_handlers = function (nodes)
{
var i;
for (i = 0; i < nodes.length; i += 1)
{
nodes[i].onclick = function (e)
{
alert(i);
};
}
};
// END BAD EXAMPLE
Вопрос: Я не понимаю, в чем проблема, если кто-то может дать мне четкий пример с цифрами и результаты, которые будут очень оценены.
Возможный дубликат [Закрытие Javascript внутри петель - простой практический пример] (http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –
Независимо от того, какой узел вы нажимаете on, он будет предупреждать одно и то же значение, равное количеству узлов, в которые вы проходили. См. также http://stackoverflow.com/questions/2568966/how-do-i-pass-the-value-not-the-reference -of-a-js-variable-to-a-function и http://stackoverflow.com/questions/111102/how-do-javascript-closures-work – DCoder
@AnttiHaapala приятно! тот же обман, через несколько секунд после вас, не увидев ваш голос. –