写法一
$(".a").on("click",function(){
test();
});
test()函数正常被调用。
写法二 $(".tl").on("click",test)
test()函数正常被调用。
错误写法 $(".tl").on("click",test())
求问为什么第三种写法错误。不能再这个位置添加括号。
在附加一个问题,html中
<a onclick="test()"><a>
正常执行
<a onclick= test ><a>
不能执行,为什么?
test() 这种语法是调用函数,
$(".tl").on("click",test()) 这个意思是吧test()函数返回的结果传给click事件的回调。
第一种写法里,function(){} 是一种引用对象,传给了click事件的回调,那么在这是function(){...}里的任何可执行代码都会在$(".a")触发click事件时执行。
第二种写法的意思是,test这个函数作为$(".tl")的click回调事件。
题主的问题是不明白函数的本质是什么,加()代表调用函数并返回函数运算的返回值,不加括号代表所声明的这个函数对象。