Таким образом, вопрос, в чем разница междуwindow.onload = someFunctionName против window.onload = someFunctionName()
window.onload = someFunctionName
против window.onload = someFunctionName()
и я должен использовать это круглые скобки?
Таким образом, вопрос, в чем разница междуwindow.onload = someFunctionName против window.onload = someFunctionName()
window.onload = someFunctionName
против window.onload = someFunctionName()
и я должен использовать это круглые скобки?
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 вернулся, но никогда не дозвонились.
window.onload = someFunction;
- назначает SomeFunction на OnLoad событие
window.onload = someFunction();
- присваивает результат SomeFunction на OnLoad событие.
Плохое объяснение, без обид. Кроме того, текст первого объяснения находится непосредственно над вторым блоком кода, поэтому он запутан. –
Вы должны знать, что in Javascript a function can return another function after execution. По этой причине, поскольку вы не показываете какой-либо код, оба примера могут быть правильными.
Но есть различия между ними:
window.onload = someFunctionName
Назначает someFunctionName
себя в качестве обработчика OnLoad;
window.onload = someFunctionName()
не назначает функцию someFunctionName
, а возвращает результат выполнения функции someFunctionName
. Предполагая, что someFunctionName
сам возвращает функцию, тогда это может быть правильно, иначе вы получите неожиданные результаты.
Функции Javascript - это объекты. Когда вы используете круглые скобки, вы вызываете функцию. Когда вы используете функцию без круглых скобок, вы обращаетесь к объекту функции (т. Е. Самой функции).
Так что все зависит от того, что вы делаете ...
Вот отличная спецификация: https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onload
Есть несколько способов, чтобы установить его: 1. Javascript, что требует установки его к функция. 2. Настройка его с помощью тега HTML в виде строкового значения.
Примеры как здесь, так и действительны. Я бы рекомендовал Javascript непосредственно передавая ссылку на функцию: http://www.w3schools.com/jsref/event_onload.asp
На самом деле это не касается разницы между двумя примерами в вопросе. – nnnnnn
'window.onload = someFunctionName()' выполняет функцию _right в то point_, и присваивает все возвращенные в 'window.onload', в то время как' window.onload = someFunctionName' присваивает саму функцию ' window.onload'. – Passerby
Последний будет назначать результат функции (возвращаемое значение). Первый будет просто ссылкой на функцию. –
Как указано выше, вторая форма присваивает свойству onload результат выполнения someFunctionName, а первая - самой функции. Если вы читаете письменный код, тогда вы должны знать, что результат функции может быть функцией самостоятельно – Eineki