2013-04-02 3 views
3

У меня есть функция showText(), которая копирует текст из текстового поля формы в другой пункт. Она вызывается следующим образом:Когда использовать круглые скобки с функцией javascript

document.getElementById("mybutton").onclick = showText; 

Это не будет работать, если я добавляю() до конца ShowText, что я понимаю, от чтения подобных ответов здесь это единственный способ для вызова функции.

Позже в сценарии он требует() для работы:

window.addEventListener("keypress", function(e) { 
    var keycode = e.keyCode; 
    if (keycode == 13) { 
     showText(); 
    } 
}, false); 

Я не уверен, что здесь происходит.

+0

Функции - это объекты. Два примера иллюстрируют назначение функции vs вызов функции. – 2013-04-02 22:26:51

ответ

9

showTextфункцияshowText.

showText() выполняет функцию showText и возвращает результат.

Когда вы присоединяете функцию к обработчику событий, например .onclick, он ожидает function.

Вы можете вызвать функцию и возвращает результат к событию, как это: document.getElementById("mybutton").onclick = showText(); при условии, что функция сама возвращает обычную функцию:

function showText() { 
    return function() { 
     alert('hello world'); 
    } 
} 
0

В функции Javascript являются гражданами первого сорта, который означает, что они могут быть назначены к переменной ... это то, что вы делаете я первый ... Вы в основном устанавливаете onclick в функцию по вашему выбору (сообщая браузеру, что, когда это нажатие ... вызовите эту функцию)

С помощью() вы вызываете функцию.

Я также могу сделать что-то вроде этого

function test() { 
    alert('Alert something'); 
} 

var a = test; 
a(); 
0

Если у вас есть такое заявление:

onclick = showText; 

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

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

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