为什么会这样
$( '#someid' ).click( function() {
    getdata( 'listing' , function( data ) {
        showlist( data );
    }, 'string' , 1 );
});
工作,但这个没有
$( '#someid' ).click( function() {
    getdata( 'listing' , showlist( data ), 'string' , 1 );
});
为什么会这样
$( '#someid' ).click( function() {
    getdata( 'listing' , function( data ) {
        showlist( data );
    }, 'string' , 1 );
});
工作,但这个没有
$( '#someid' ).click( function() {
    getdata( 'listing' , showlist( data ), 'string' , 1 );
});
它不起作用,因为getdata要求一个函数作为第二个参数。在第二个示例中,您正在执行函数(并传递其返回值)而不是传递函数本身。
如果你写
$( '#someid' ).click( function() {
    getdata( 'listing' , showlist, 'string' , 1 );
});
没有括号()它仍然有效,但正如您所看到的,您不能再data沿函数传递参数showlist
在您的第二个示例中,您正在执行showlist(data)并将其结果值作为getdata()参数。
你可以想象,这是:
getdata( 'listing' , showlist( data ), 'string' , 1 );
是这样的逻辑等价物:
var temp = showlist( data );
getdata( 'listing', temp, 'string', 1);
function( data ) {
        showlist( data );
    }
表示您正在传入一个匿名函数
showlist( data )
表示您正在调用showList(data)并将返回值传递给函数。如果您想正确使用第二种情况,请像这样修复它:
$( '#someid' ).click( function() {
    getdata( 'listing' , showlist, 'string' , 1 );
});
因为第一个是将函数作为第二个参数传递给getdata,而第二个是传递调用函数的结果。
你可以正确地写第二个
$( '#someid' ).click( function() {
    getdata( 'listing' , showlist, 'string' , 1 );
});
我们不再在这里调用 showlist,而是允许getdata稍后调用它。