2013-12-22 7 views
1

я знаком с Python и несколько с C, и когда я вижу этот синтаксис в JS это действительно сбивает с толку меняЕсть ли разница между window.onload = stuff и window.onload = stuff()?

function begin() { 
    console.log("done did it"); 
} 

window.onload = begin(); // the same output as 
window.onload = begin; // this one 

В Python, можно было бы проездом возвращаемое значение функции, другой указатель на функцию. Какова семантика в JS для этих двух утверждений?

ответ

10

Да, есть очень большая разница.

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

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

+0

Так вы говорите, что поведение такое же, как с Python? –

+1

@MorganWilde: Я не знаю Python достаточно хорошо, чтобы сказать это, но из того, что вы описали, я так считаю. –

0

Правильный путь:

window.onload = xxxx; 

ххх должно быть функцией.

первый:

var fn = function() { 
    alert("abc"); 
} 

window.onload = fn; 

другой:

var fn = function() { 
    var abc = "abc"; 
    return function() { 
     alert(abc); 
    } 
} 
window.onload = fn(); 
+0

да, вы правы !!! – Andy12530

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