$("#btn1").click(function(){
//CheckMyWeight is called Perfectly here and not in the if loop expression
if ($("#frm1").validationEngine({returnIsValid:true}) && CheckMyWeight() && a === b) {
}});
为什么我无法在if循环表达式中调用“CheckMyWeight()”并且我能够完美地调用 在“#btn1”功能之后。
答案 0 :(得分:4)
如果&&
的左侧返回假,则不会评估右侧。 (因为整个表达不可能是真的)
这称为短路。
如果您想要始终调用这两个函数,则应在条件之外调用它们并将结果分配给变量并留下注释解释原因:
var isValid = $("#frm1").validationEngine({returnIsValid:true});
var isHeavy = CheckMyWeight(); //Always call both functions
if (isValid && isHeavy && a === b) {
...
}
还有其他解决方法,但它们隐藏了代码的意图。
答案 1 :(得分:0)
以下是一个小程序,用于测试你是否可以调用if循环表达式中的“CheckMyWeight()”。它工作正常,问题在于$(“#frm1”)。validationifyng({returnIsValid:true}试试通过打破条件来工作。
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function() {
alert('body');
function CheckMyWeight() {
return true;
}
$("#btn1").click(function(){
var a =1,b=1;
//CheckMyWeight is called Perfectly here and not in the if loop expression
// CheckMyWeight() &&
if ( CheckMyWeight() && a === b) {
alert('hi');
}
});
});
</script>
</head>
<body>
<button id="btn1">Click me</button>
</body>
</html>