如EXTJS中的一段简单代码
Ext.MessageBox.prompt('propmt','输入',function(e,text){
MessageBox.alert('Result','你选择的是'+e+',你输入的是'+text)
});
那个function(e,text) 定义了2个参数,可调用这个函数时,程序怎么知道传给e是什么,text是什么,是否预先定义好了实参,怎么知道它怎么定义的,有几个参数呢?
Ext.MessageBox.prompt('propmt','输入',function(e,text){
MessageBox.alert('Result','你选择的是'+e+',你输入的是'+text)
});
那个function(e,text) 定义了2个参数,可调用这个函数时,程序怎么知道传给e是什么,text是什么,是否预先定义好了实参,怎么知道它怎么定义的,有几个参数呢?
然后,js的函数在被调用时总共会产生25个参数,你没有传入的参数都用null填充,所以即使定义函数时没有列参数表,在调用时仍然可以给传参数进去。所有的25个参数都被按顺序装在一个数组arguments里面,在函数里可以随时取用。只不过你定义了参数表后让代码具有更好的可读性。
=================================================
你猜对了,就是预先定义好了实参.至于怎么定义,几个参数,只能去看看api,或者源码了.
简单的callback实现: <script>
var foo = function(o,fn){
if(fn && typeof fn == 'function'){
fn.apply(o,[o.arg1,o.arg2])
}
} foo({arg1:'hi~!',arg2:'hey~!'},function(a1,a2){alert(a1+a2)});
foo({arg1:'hello',arg2:'world'},function(x1,x2){alert(x1+' '+x2)});
</script>