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)
在第二个例子中,你实际上并没有返回函数,而是执行函数的结果.(考虑到在这种情况下从右到左执行代码.)
为了说明,稍微改变你的第一个例子:
$('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处理程序),当然没有意义,因为它期望一个布尔值而不是一个函数.
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |