参数为函数——回调?
参数如果传入的是一个函数名,在当前函数中运行了这个参数,这就是回调。
<script>
function fn5(o,fn){ //注意:传入的是函数名,而不是函数,没有括号
o.a += 1;
fn(o);
}
function fn6(o){
o.a += 10;
}
function fn7(o){
o.b=20;
}
var obj4={a:1};
fn5(obj4,fn6); //此处的obj4.a为12
fn5(obj4,fn7); //此处obj4.a为2,obj4.b为20
console.log(obj4);
</script>
分析: fn5( obj4,fn6 ); 此处调用fn5,然后参数分别为obj4对象和fn6对象,那么o.a += 1;即obj4.a = a+1即obj4.a = 2; 然后下一语句块相当于fn6( obj4 )即调用了fn6( obj4 );即obj4.a = a+10;即前面得出a等于2,此时obj4.a=12;
fn5(obj4,fn7); 此处调用fn5,然后参数分别为obj4对象和fn7对象,那么o.a += 1;即obj4.a = a+1又a=1;则obj4.a = 2; 然后下一语句块相当于fn7( obj4 )即调用了fn7( obj4 );即obj4.b = 20;则此时obj4.a=2; obj4.b=20;