2013-12-25 4 views
1

Таким образом, вопрос, в чем разница междуwindow.onload = someFunctionName против window.onload = someFunctionName()

window.onload = someFunctionName против window.onload = someFunctionName() и я должен использовать это круглые скобки?

+1

'window.onload = someFunctionName()' выполняет функцию _right в то point_, и присваивает все возвращенные в 'window.onload', в то время как' window.onload = someFunctionName' присваивает саму функцию ' window.onload'. – Passerby

+0

Последний будет назначать результат функции (возвращаемое значение). Первый будет просто ссылкой на функцию. –

+0

Как указано выше, вторая форма присваивает свойству onload результат выполнения someFunctionName, а первая - самой функции. Если вы читаете письменный код, тогда вы должны знать, что результат функции может быть функцией самостоятельно – Eineki

ответ

2

window.onload = someFunctionName(); будет позвонить функцию someFunctionName и присвоить возвращаемое значение к onload собственности.

window.onload = someFunctionName; назначает функцию someFunctionName на имущество onload. Браузер вызовет эту функцию, когда произойдет событие load. Функции - это объекты. Когда вы ссылаетесь на них по их имени без, называя их, вы имеете в виду объект.

Пример:

window.onload = test(); 

function test() { 
    alert("outer"); 
    return function(){ 
    alert("inner"); 
    } 
} 

это будет предупреждать в два раза теста() называется оно будет предупреждать внешним и возвращать innerfunction для загрузки и OnLoad он будет оповещать внутреннее.

в то время как

window.onload = test; 

function test() { 
    alert("outer"); 
    return function(){ 
    alert("inner"); 
    } 
} 

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

Here is fiddle

+0

Я бы добавил, что результатом функции может быть функция – Eineki

+0

@Zaheer_Ahmed О, мне не нужна помощь (по крайней мере, на эту тему). Но я видел несколько скриптов, разбитых новичками, для этих скобок, удаленных без проверки результата функции callad. – Eineki

1

window.onload = someFunction; - назначает SomeFunction на OnLoad событие

window.onload = someFunction(); - присваивает результат SomeFunction на OnLoad событие.

+0

Плохое объяснение, без обид. Кроме того, текст первого объяснения находится непосредственно над вторым блоком кода, поэтому он запутан. –

0

Вы должны знать, что in Javascript a function can return another function after execution. По этой причине, поскольку вы не показываете какой-либо код, оба примера могут быть правильными.

Но есть различия между ними:

  • window.onload = someFunctionName Назначает someFunctionName себя в качестве обработчика OnLoad;

  • window.onload = someFunctionName() не назначает функцию someFunctionName, а возвращает результат выполнения функции someFunctionName. Предполагая, что someFunctionName сам возвращает функцию, тогда это может быть правильно, иначе вы получите неожиданные результаты.

Функции Javascript - это объекты. Когда вы используете круглые скобки, вы вызываете функцию. Когда вы используете функцию без круглых скобок, вы обращаетесь к объекту функции (т. Е. Самой функции).

Так что все зависит от того, что вы делаете ...

2

Вот отличная спецификация: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onload

Есть несколько способов, чтобы установить его: 1. Javascript, что требует установки его к функция. 2. Настройка его с помощью тега HTML в виде строкового значения.

Примеры как здесь, так и действительны. Я бы рекомендовал Javascript непосредственно передавая ссылку на функцию: http://www.w3schools.com/jsref/event_onload.asp

+2

На самом деле это не касается разницы между двумя примерами в вопросе. – nnnnnn

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