Все правильно понял :))
|
Так а почему, без дополнительной функции с return срабатывает неверно?
|
Цитата:
Цитата:
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, и при событии ничего не происходит. |
Я вобще то об этом:
Цитата:
Цитата:
|
Спасибо за разъяснение. При return возвращается функция. А без return значение. Не ясно мне только, почему значение возвращается сразу, ведь событие еще не произошло.
|
Потому что временная функция вызывается сразу на месте.
() после фукции означают её вызов. Если не писать скобочек - вызова не будет. Будет присвоена сама функция, а не возвращённый результат. В js всё просто, всё действует именно так, как написано.)) Таки рекомендую внимательно прочитать статью замыкания. Если даже после внимательного прочтения будет всё ещё не понятно, рекомендую сделать поиск по форуму по словам "замыкания"/"замыкание" и начать читать темы по порядку до полного понимания. Я серьёзно, там не так уж много текста для того кто действительно хочет разобраться в теме. Этот вопрос неоднократно разбирался на данном форуме, порой очень и очень подробно. |
Часовой пояс GMT +3, время: 12:43. |