为什么会这样
$( '#someid' ).click( function() {
getdata( 'listing' , function( data ) {
showlist( data );
}, 'string' , 1 );
});
工作,但这个不是
$( '#someid' ).click( function() {
getdata( 'listing' , showlist( data ), 'string' , 1 );
});
答案 0 :(得分:1)
它不起作用,因为getdata
将函数作为第二个参数。在第二个例子中,你执行函数(并传递其返回值)而不是传递函数本身。
如果你写
$( '#someid' ).click( function() {
getdata( 'listing' , showlist, 'string' , 1 );
});
没有parens ()
它仍然有效,但正如您所看到的,您不能再通过data
函数中的showlist
参数
答案 1 :(得分:1)
在第二个示例中,您正在执行showlist(data)
并将其结果值作为getdata()
参数。
你可以想象,这个:
getdata( 'listing' , showlist( data ), 'string' , 1 );
与此相当:
var temp = showlist( data );
getdata( 'listing', temp, 'string', 1);
答案 2 :(得分:1)
function( data ) {
showlist( data );
}
表示您传入的是匿名函数
showlist( data )
表示您正在调用showList(data)
并将返回的值传递给函数。
如果您想正确使用第二种情况,请按以下方式修复:
$( '#someid' ).click( function() {
getdata( 'listing' , showlist, 'string' , 1 );
});
答案 3 :(得分:0)
因为第一个是将函数作为第二个参数传递给getdata
,而第二个是传递调用函数的结果。
你可以正确地写第二个
$( '#someid' ).click( function() {
getdata( 'listing' , showlist, 'string' , 1 );
});
我们不再在此处调用 showlist
,而是让getdata
稍后再调用它。