Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / callback с параметром. / 4 сообщений из 4, страница 1 из 1
02.11.2014, 12:26
    #38794194
redwhite90
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callback с параметром.
Код: javascript
1.
2.
3.
4.
5.
6.
7.
var index, _i;

for (index = _i = 0; _i < 10; index = ++_i) {
  setTimeout(function() {
    return log(index);
  }, 1000);
}



этот код вернёт 10 десяток


а этот:

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
var index, _fn, _i;

_fn = function(index) {
  return setTimeout(function() {
    return log(index);
  }, 1000);
};
for (index = _i = 0; _i < 10; index = ++_i) {
  _fn(index);
}



0,1,2....

Можете пояснить на пальцах как это так случается?
...
Рейтинг: 0 / 0
04.11.2014, 18:33
    #38795453
Да ну
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callback с параметром.
redwhite90,

В первом фрагменте [[scope]] для функции-аргумента setTimeout одинаковый, во втором - разный.

Подробнее - тут или тут
...
Рейтинг: 0 / 0
04.11.2014, 19:12
    #38795500
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callback с параметром.
...
Рейтинг: 0 / 0
05.11.2014, 09:11
    #38795764
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
callback с параметром.
redwhite90Можете пояснить на пальцах как это так случается?
В первом варинте цикл крутнется мгновенно и переменная index станет равна 10. После этого начнут запускаться setTimeout который и будет выводить это значение...

Во втором случае setTimeout будет запускаться с переденным ему значением...
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / callback с параметром. / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]