Ошибка JSlint «Не создавайте функции внутри цикла». приводит к вопросу о самом Javascript

У меня есть код, который вызывает анонимные функции внутри цикла, что-то вроде этого псевдо-примера:

for (i = 0; i < numCards; i = i + 1) {
    card = $('<div>').bind('isPopulated', function (ev) {
        var card = $(ev.currentTarget);
        ....

JSLint сообщает об ошибке «Не создавайте функции внутри цикл. «Мне нравится, чтобы мой код JSLint был чистым. Я знаю, что могу вывести анонимную функцию из цикла и вызвать ее как именованную функцию. Кроме того, вот мой вопрос:

Будет ли интерпретатор Javascript действительно создавать экземпляр функции для каждой итерации? Или действительно существует только один "скомпилированный" экземпляр функции и один и тот же код выполняется повторно? То есть, действительно ли «предложение» JSLint о перемещении функции из цикла влияет на эффективность кода?

28
задан Josh Kelley 13 October 2010 в 19:03
поделиться