为什么 onscroll 在这个函数中没有括号就可以工作?
Why does onscroll work without parenthesis in this function?
我在调用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 上的 link:http://codepen.io/marcoangelo/pen/KWdWem
如果能帮助理解 Javascript 这样做的原因,那就太好了。
您需要将函数对象分配给事件处理程序属性。
doesRun
和 doesNotRun
是解析为函数对象的表达式。
doesRun()
和 doesNotRun()
是(立即)调用这些函数并解析为调用它们时获得的 return 值的表达式。在这种情况下,由于函数没有 return
语句,即 undefined
。
我在调用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 上的 link:http://codepen.io/marcoangelo/pen/KWdWem
如果能帮助理解 Javascript 这样做的原因,那就太好了。
您需要将函数对象分配给事件处理程序属性。
doesRun
和 doesNotRun
是解析为函数对象的表达式。
doesRun()
和 doesNotRun()
是(立即)调用这些函数并解析为调用它们时获得的 return 值的表达式。在这种情况下,由于函数没有 return
语句,即 undefined
。