$('button').click(function(){ console.log('works'); });
当我单击所需的按钮时,这将输出“作品”。
但是,如果我将相同的代码打包在一个函数中,并在其上附加括号(通常调用一个函数)来调用它,如下所示:
function worker(){ console.log('works'); }
$('button').click(worker());
工人被开除,没有任何点击按钮。但是如果我避开括号,就像
function worker(){ console.log('works'); }
$('button').click(worker);
我正在获得所需的功能。为什么点击处理程序会以这种方式运行?
当您在不带括号的JavaScript中调用函数时,您正在做的就是分配实际的函数。这不会立即执行该功能。
在带括号的JavaScript中调用函数时,您将立即执行该函数并返回该函数的值。
话虽如此,如果您有一个函数本身返回了一个函数,则可以实际调用一个函数,其返回值将是另一个函数。(一般不建议)
为了解决您的评论:假设您编写以下语句:$('button').click(console.log('works'));
结果将是,一旦页面被加载,“ works”将被打印到控制台。这是因为带有括号console.log()
的函数被调用。
但是,如果您执行以下方法:
var worksFunc = function() {console.log('works')};
$('button').click(worksFunc);
现在它将引用该函数以在click
事件上执行。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句