我在调用windowScroll函数时做了3个函数。为什么它不能用于额外的括号,但在其自己的函数内部或没有括号时可以工作?
var windowScroll = function() {
var doesNotRun = function() {
console.log('does not run');
};
var doesRun = function() {
console.log('does run');
};
window.onscroll = doesNotRun();
window.onscroll = doesRun;
window.addEventListener('scroll', function(){
doesRun();
});
};
windowScroll();
以下是codepen上的链接:http://codepen.io/marcoangelo/pen/KWdWem
任何有助于理解Javascript为什么会这样做的帮助都会很棒。
答案 0 :(得分:2)
您需要将函数对象分配给事件处理程序属性。
doesRun
和doesNotRun
是解析为函数对象的表达式。
doesRun()
和doesNotRun()
是(立即)调用这些函数并解析为调用它们时返回值的表达式。在这种情况下,由于函数没有return
语句,即undefined
。