调用函数和返回函数有什么区别?

Ope*_*tor 2 javascript jquery return

我正在使用checkForm函数来验证一个简单的表单.当用户按提交时,运行checkForm.第一个和第二个例子有什么区别?

例1.

$('form').submit(function(){
    checkForm();
});
Run Code Online (Sandbox Code Playgroud)

例2.

$('form').submit(function(){
    return checkForm();
});
Run Code Online (Sandbox Code Playgroud)

Dav*_*vid 7

在第二个例子中,你实际上并没有返回函数,而是执行函数的结果.(考虑到在这种情况下从右到左执行代码.)

为了说明,稍微改变你的第一个例子:

$('form').submit(function(){
    var result = checkForm();
});
Run Code Online (Sandbox Code Playgroud)

如您所见,执行该函数并从函数返回结果.只是没有任何结果.随着匿名功能的完成,它会立即超出范围,逐渐淡入古代.

稍微修改第二个例子以进一步说明:

$('form').submit(function(){
    var result = checkForm();
    return result;
});
Run Code Online (Sandbox Code Playgroud)

与第一个示例一样,checkForm执行并将其结果存储在变量中.然后从匿名函数返回该值.当然,这个过程可以内联,这样就不需要临时变量:

$('form').submit(function(){
    return checkForm();
});
Run Code Online (Sandbox Code Playgroud)

操作顺序不会更改,checkForm执行,返回结果,并从匿名函数返回结果.

可以返回函数本身,但实际上没有执行它:

$('form').submit(function(){
    return checkForm;
});
Run Code Online (Sandbox Code Playgroud)

由于函数在JavaScript中是"一等公民"并且可以像任何其他变量一样传递,这将返回实际函数而不是函数的结果.假设调用代码可能最终会执行该函数.但是,在这种情况下(submit处理程序),当然没有意义,因为它期望一个布尔值而不是一个函数.