Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么这个变换不是等价的?_Javascript - Fatal编程技术网

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
(即返回值)