关于调用js方法加不加括号的一个例子:
function run(){ alert("doing..."); return "str"; } alert("run:"+run); //不带(),获取方法内容 run();//带(),调用方法执行 alert("run():"+run());//带括号,获取方法返回值
1.调用函数加括号:执行函数体run(),执行后run()等于其返回值,如上例中执行后run()等于“str”
2.调用函数不加括号:不会执行函数体,自然不会有函数返回值。而是把函数名称作为函数的指针,把整个函数体传过去,在需要的时候好找到函数体去执行。
3.注意:js中的回调函数都是使用函数引用,所以回调函数是不写括号的!
看一个回调函数不加括号的例子:
xmlhttp.onreadystatechange=callback; /*说明:注册回调函数只用函数名,不加括号,是因为该句只是把回调函数名注册给xmlhttp.onreadystatechange。如果加了括号,则是调用函数然后把函数的返回值 注册给xmlhttp.onreadystatechange*/
情形一:xmlhttprequest.onreadystatechange= myFunction;//把myFunction函数作为一个对象赋值给onreadystatechange.
情形二:xmlhttprequest.onreadystatechange= myFunction()//把myFunction函数的返回值赋值给onreadystatechange. 如果它的返回值是个函数的话,当然可以这么用;可一般返回值是一个值。
另外一个例子:
var myFunc=function(){/*code*/} window.onload=myFunc; //等同于: window.onload=function(){/*code*/}