2016-10-01 3 views
1

Я следую учебник по MDN для яваскрипта и они добавить обработчик OnClick к кнопке, а затем вызвать функцию внутри функции:Есть ли возможность вызвать функцию внутри функции?

myButton.onclick = function() { 
setUserName(); 
} 

Я попытался назначить событие к функции непосредственно и по-прежнему работала , поэтому я подумал, есть ли веские причины для этого.

+0

Обычно вы делаете это, когда вам нужно изменить параметры в каком-либо отношении или необходимо вызвать несколько функций по порядку. – zzzzBov

+0

Я не понимаю бит о параметрах, но я вижу причину вызова нескольких функций. –

ответ

2

Если функции не интересует объект события, который передается в качестве первого аргумента, нет. Он раздувает код, создает дополнительный объект в памяти и не имеет никакой пользы.

+0

Я не понимал, что вы подразумевали под объектом события и первым аргументом, извините, можете прояснить пожалуйста. –

+0

https://developer.mozilla.org/en-US/docs/Web/API/Event – Quentin

0

Определение функции лямбда для обработки события является грязным способом кодирования, ИМО. Это намного чище и безопаснее для разделения интерфейса и фактической обработки.

Если вам нужно сделать что-то сложное в своем обработчике, так же легко определить правильно названную функцию для выполнения задания и назначить обработчик для нее.

После того, как вы сделали это страшное усилие именования, вы можете делать все, что вы хотите с обработчиком, в том числе тестирования путем подачи фиктивных событий, многократно использовать его для обработки событий от различных кнопок и т.д.

С другой стороны, , веб-страницы, которые, вероятно, не будут находиться в течение более нескольких недель или месяцев, в лучшем случае не являются лучшим местом для чистого кодирования ...

+0

Извините, я новичок и не понимаю, что такое лямбда-функция или что вы подразумеваете под интерфейсом. –

+0

лямбда-функция - это просто функция без имени. Интерфейс - это в основном то, что вы видите (кнопки, divs и т. Д.), В то время как обработка является алгоритмической частью кода (что вы делаете с вашими данными, когда пользователь запускал действие через интерфейс). Например, вы можете сделать одну и ту же обработку, если пользователь нажимает кнопку или нажимает какую-либо горячую клавишу. –

Смежные вопросы