Javascript 为什么这个变换不是等价的?
我有一个剧本:Javascript 为什么这个变换不是等价的?,javascript,Javascript,我有一个剧本: $(document).ready(function() { $('#userName').blur(function() { $.ajax({ url : 'GetUserServlet', data : { userName : $('#userName').val() }, success : function(respon
$(document).ready(function() {
$('#userName').blur(function() {
$.ajax({
url : 'GetUserServlet',
data : {
userName : $('#userName').val()
},
success : function(responseText) {
$('#ajaxGetUserServletResponse').text(responseText);
}
});
});
});
我通过这种方式使它变得更容易:
$(document).ready(function() {
$('#userName').blur( getAjax() );
});
function getAjax() {
$.ajax({
url : 'GetUserServlet',
data : {
userName : $('#userName').val()
},
success : function(responseText) {
$('#ajaxGetUserServletResponse').text(responseText);
}
});
};
生成的代码不起作用。为什么这个变换不是等价的 您正在调用
getAjax()
,而不是将其作为函数引用传递。由于getAjax()
不返回任何值,因此实际上您正在调用:
$('#userName').blur( undefined );
要解决此问题,只需传递引用:
$('#userName').blur( getAjax );
因为您正在立即调用
getAjax()
。改为使用:$('#userName').blur(getAjax)
getAjax===function(){…}
而getAjax()===undefined
(即返回值)