Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 31.03.2013, 22:18
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Все правильно понял )
Ответить с цитированием
  #42 (permalink)  
Старый 31.03.2013, 22:26
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Так а почему, без дополнительной функции с return срабатывает неверно?
Ответить с цитированием
  #43 (permalink)  
Старый 31.03.2013, 22:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Сообщение от danik.js Посмотреть сообщение
Все правильно понял )
Не, судя по вопросу - ничего не понял, просо заюзал готовый код.)

Сообщение от platedz Посмотреть сообщение
Не ясно только, почему не выходит так

for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
	document.getElementsByName("my_name")[i].onkeyup = function(x)
	{
		console.log(x)
	}(i)
}


Буду благодарен за разъяснения
Это равносильно:
for(var i=0; i<document.getElementsByName("my_name").length; i++)
{
	function tempFunc(x){
		console.log(x)
	}
	var tempVar = tempFunc(i);
	document.getElementsByName("my_name")[i].onkeyup = tempVar;
}


Т.о. функция tempFunc выполняется сразу же(при этом записывая в console.log i из текущей итерации), а в onkeyup попадает результат её исполнения. Т.к. в temp нет return - она возвращает undefined, соответственно onkeyup == undefined, и при событии ничего не происходит.
__________________
29375, 35

Последний раз редактировалось Aetae, 31.03.2013 в 22:48.
Ответить с цитированием
  #44 (permalink)  
Старый 31.03.2013, 22:48
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Я вобще то об этом:
Сообщение от Aetae
делать не рекомендуется, ибо каждую итерацию цикла...
Сообщение от platedz
Большое спасибо.
Посмотрел пример и вышло так...
Ответить с цитированием
  #45 (permalink)  
Старый 31.03.2013, 23:24
Профессор
Отправить личное сообщение для platedz Посмотреть профиль Найти все сообщения от platedz
 
Регистрация: 15.08.2012
Сообщений: 285

Спасибо за разъяснение. При return возвращается функция. А без return значение. Не ясно мне только, почему значение возвращается сразу, ведь событие еще не произошло.

Последний раз редактировалось platedz, 01.04.2013 в 00:31.
Ответить с цитированием
  #46 (permalink)  
Старый 01.04.2013, 03:30
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,583

Потому что временная функция вызывается сразу на месте.
() после фукции означают её вызов. Если не писать скобочек - вызова не будет. Будет присвоена сама функция, а не возвращённый результат. В js всё просто, всё действует именно так, как написано.))

Таки рекомендую внимательно прочитать статью замыкания. Если даже после внимательного прочтения будет всё ещё не понятно, рекомендую сделать поиск по форуму по словам "замыкания"/"замыкание" и начать читать темы по порядку до полного понимания. Я серьёзно, там не так уж много текста для того кто действительно хочет разобраться в теме. Этот вопрос неоднократно разбирался на данном форуме, порой очень и очень подробно.
__________________
29375, 35

Последний раз редактировалось Aetae, 01.04.2013 в 03:37.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение из тектового файла Jackky Общие вопросы Javascript 14 30.06.2012 01:00
Чтение и запись файла kilogram Серверные языки и технологии 0 16.05.2012 23:59
Чтение и запись с txt или csv файла vitaver AJAX и COMET 0 23.12.2010 20:43
Чтение файла средствами javascript DVVID Общие вопросы Javascript 4 05.04.2010 15:00
чтение из случайного файла lesik Общие вопросы Javascript 7 07.07.2008 17:24