- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Маркетинг для шоколадной фабрики. На 34% выше средний чек
Через устранение узких мест
Оксана Мамчуева
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Когда использую 1 вариант цикла, то создается дополнительный индекс.
Во 2 варианте все хорошо.
Я не пойму момент с анонимной функцией, когда в конце ставится (i). Можете объяснить для чего это делается, как это работает, и что это за прием?
1) ===================================
for (var i = 0; i < el.length; i++) {
el.addEventListener('change', function(){
resetErrors(i);
}, false);
}
2) ===================================
for (var i = 0; i < el.length; i++) {
(function(i) {
el.addEventListener('change', function(){
resetErrors(i);
}, false);
} (i) );
}
===================================
анонимной функцией, когда в конце ставится (i). Можете объяснить для чего это делается,
Если не ошибаюсь - это передается параметр в самовызываемую функцию
Цикл быстрей отработает чем первый addEventListener выполниться. На тот момент когда отработает первый addEventListener переменная i может в себе содержать последний элемент массива или вообще undefined.
А так можно сказать вы замороживаете переменную i для каждого выполнения addEventListener.
Цикл быстрей отработает чем первый addEventListener выполниться. На тот момент когда отработает первый addEventListener переменная i может в себе содержать последний элемент массива или вообще undefined.
А так можно сказать вы замороживаете переменную i для каждого выполнения addEventListener.
Если я вас правильно понял, то в результате выполнения этого кода
должно сначала 20 раз вывестить console.log('outside: '+i);
А потом уже выполняться console.log('inside: '+i);
Но во время моего тестирования они чередуются
Потому что событий нет асинхронных. По сути это анонимная функция, ее можно так записать и вызвать
а можно вот так:
Первые () - это функция, вторые () мы ее вызываем.
Можно параметр переедать при вызове во вторых кнопках и использовать в анонимной функции:
Вот и вашем втором примере вы передаете в параметр необходимый i в функцию.
К примеру пошла первая итерация цикла i=0
addEventListener - функция асинхронная, когда сработаем вызывается коллбек и первый вызов занимает 50 милисекунд.
Что бы цикл завершился нужно 2 милисекунды.
В итоге в первом примере когда у вас сработает и исполниться первый вызов addEventListener - цикл уже отработает и i не будет равен 0, может уже будет равен 50 или вообще undefined. Тогда как второй пример замыкает i в анонимную функцию и передаст корректный i даже если цикл уже отработается и если даже i вообще не будет существовать.