回调函数很简单,就是一个函数名,如object.οnclick=a,回调函数的形式就是个函数名,不带括号
object.οnclick=a
一般a=function( ){ alert (1) },所以object.οnclick=a相当于
object.οnclick=function( ){
alert(1);
}
==============================================================================
<script>
function move (m) {alert(m);
}
setTimeout( move,1000);
</script>
setTimeout( "move( )",1000 )相当于setTimeout( move,1000),前者带引号,带括号,可以传参数,后者如果要传参数,要写成的形式为setTimeout( function( ){ move(50) },1000),而不能写成setTimeout( move(50),1000),因为这个形式会马上执行move函数,而非等到1秒后。
setTimeout( function( ){ move(50) },1000)
等价于:
setTimeout( ”move(50)”,1000)
就好象:
object.οnclick=a,这里如果要给a加参数的话,不能 object.οnclick=a(m),而是应该
object.οnclick=function( ){
a(m);
}
=========================================
jquery中有同样问题:
$.get('myhtmlpage.html', myCallBack);这样没有问题,但是如果要传参数,写成以下形式:
$.get('myhtmlpage.html', myCallBack(param1, param2)),则是错误的写法,因为会立刻执行回调函数,正确形式为:
$.get('myhtmlpage.html', function( ){
myCallBack(param1, param2);
});
为什么匿名函数可以替代回调函数就是因为:
function( ){
myCallBack(param1, param2);
}
相当于
var f=function( ){
myCallBack(param1, param2);
}
这里的f可以替换成任何其它的名字,也就是说,这里的f就是模糊代表了一个回调函数。