Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2018, 21:54
Новичок на форуме
Отправить личное сообщение для osminooge21 Посмотреть профиль Найти все сообщения от osminooge21
 
Регистрация: 30.04.2018
Сообщений: 1

вопрос по тесту js
не могу понять почему выводит 10 раз по 10????? разве не должно получаться 0 -9?


for(var i=0; i<10; i++) {
setTimeout(function() {
alert(i);
}, 100);
}
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2018, 22:20
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Загнал этот код на jsfiddle.net и компилятор сразу же подчеркнул слово function - функция внутри цикла во внешнем scope может привести к нарушению семантики, конфликтам и непредсказуемым последствиям. - Может быть из-за этого?
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2018, 22:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

osminooge21,
Почему это не работает?
Ответить с цитированием
  #4 (permalink)  
Старый 17.08.2018, 14:59
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от osminooge21
разве не должно получаться 0 -9?
Нет.
На момент срабатывания таймера переменная i имеет значение 10.
Его-то и будут выводить те таймеры.

function test() {
	alert(++test.cnt);
	if (test.cnt<10) {
		setTimeout(test,100);
	};
};
test.cnt=0;
setTimeout(test,1000);
Ответить с цитированием
  #5 (permalink)  
Старый 17.08.2018, 15:20
Аватар для SuperZen
Профессор
Отправить личное сообщение для SuperZen Посмотреть профиль Найти все сообщения от SuperZen
 
Регистрация: 08.11.2017
Сообщений: 642

надо вместо var использовать let
или использовать IIFE
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Еxcel на js вопрос по регулярке NataDem Events/DOM/Window 0 11.01.2017 21:45
Вопрос по js HELP komandor32 Общие вопросы Javascript 1 08.01.2014 23:28
Картинка обрабатывается js 4yBaK Общие вопросы Javascript 10 11.09.2011 09:28
вопрос про возможности JS для рисования и анимации macdack Библиотеки/Тулкиты/Фреймворки 3 15.07.2011 00:13
Вопрос знатока JS adamasantares jQuery 4 25.05.2011 18:37