Как правильно вызвать функцию JavaScript? - PullRequest
0 голосов
/ 07 февраля 2012

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

window.onload = writeMessage;

function writeMessage()
{
    document.write("Hello World");
}

Ответы [ 4 ]

5 голосов
/ 07 февраля 2012

window.onload = writeMessage; это не звонок - это назначение. Вы назначаете функцию writeMessage как поле onload объекта window. Фактический вызов выполняется (внутри) как window.onload(), что эквивалентно writeMessage() в вашем случае.

2 голосов
/ 07 февраля 2012

В следующем коде функция writeMessage вызывается без скобок.

На самом деле это не так.Код

window.onload = writeMessage;

не вызывает функцию.Он назначает функцию свойству onload window.Частью процесса загрузки страницы в браузерах является запуск функции, назначенной этому свойству (если есть), после завершения процесса загрузки.

Если вы написали

window.onload = writeMessage();

то, что вынужно будет позвонить writeMessage и присвоить результат вызова window.onload, так же как x = foo();.


Обратите внимание, что код, который вы на самом делеКавычка, которая выполняет document.write при загрузке страницы, уничтожит только что загруженную страницу и заменит ее текстом «Hello world», потому что когда вы вызываете document.write после завершения загрузки страницы, это подразумевает document.open, который очищает страницу.(Попробуйте здесь ; исходный код здесь .) В современных веб-страницах и приложениях вы почти никогда не используете document.write, но в редких случаях, когда вы это делаете, оно должно быть вкод, который запускается при загрузке страницы (например, не позднее).

1 голос
/ 07 февраля 2012

() используется для ВЫПОЛНИТЬ функцию

когда пишешь

window.onload = writeMessage;

вы фактически устанавливаете делегат (pointer для функции, которая будет выполняться), для которой - когда произойдет событие onload.

0 голосов
/ 07 февраля 2012

Это уже правильно.

Вам не нужны скобки, потому что вы просто храните функцию в window.onload, а не вызываете ее сами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...