为什么下面的javascript函数总是返回true?

为什么下面的javascript函数总是返回true?,javascript,if-statement,return,Javascript,If Statement,Return,我有以下函数,它将始终返回True。你知道为什么以及如何避免吗?谢谢各位 function validateStatuses(xyx){ var umm = ugh[xyx]; var selects = $('#cont_'+ugh.xyz+' .status_select'); var codes = $('#cont_'+ugh.xyz+' .status_code'); for (var i = 0; i < selects.length; i++) { var value

我有以下函数,它将始终返回True。你知道为什么以及如何避免吗?谢谢各位

function validateStatuses(xyx){
var umm = ugh[xyx];
var selects = $('#cont_'+ugh.xyz+' .status_select');
var codes = $('#cont_'+ugh.xyz+' .status_code');
for (var i = 0; i < selects.length; i++) {
    var value = selects[i].options[selects[i].selectedIndex].value;
    if (value == 'new'){
        for (var j = 0; j < codes.length; j++) {
            var blagh = codes[j].options[codes[j].selectedIndex].value;
            if(blagh == 13){
                $('#info_dialog').html('');
                $('#info_dialog').append("<p>You are trying to process a bill ("+bill.name+") with a STATUS of NEW and a STATUS CODE of NONE. Please correct this issue before you proceed!</p><hr />");
                $('#info_dialog').dialog({
                    buttons:{
                        Cancel: function(){
                            $(this).dialog('close');
                        }
                    }
                    });
                billCounterAdd();
                return false;
            }//end if           
        }//end for
    }else{
        return true;  //this is the problem;
    }//end if
}//end for
}//end Function
函数验证状态(xyx){
var-umm=ugh[xyx];
var select=$(“#cont_u”+ugh.xyz+”.status_select”);
变量代码=$(“#cont_u”+ugh.xyz+”.状态代码);
对于(变量i=0;i
); $(“#信息对话框”)。对话框({ 按钮:{ 取消:函数(){ $(this.dialog('close'); } } }); billCounterAdd(); 返回false; }//如果结束 }//结束 }否则{ return true;//这就是问题所在; }//如果结束 }//结束 }//端函数
我敢说您至少有一个select的值不是
'new'
。因为你做了一个
返回true
else
子句中,第一个选择的值不是
'new'
将导致函数返回true

它看起来确实有一个错误的返回路线(如果在开始时有一个
'new'
选择,并且有一个值为
13
的代码选择),但可能测试中没有出现该测试用例


就找出这样的问题而言,没有什么比在一个像样的调试器中遍历代码并看着它逐行运行更合适的了。所有主流浏览器现在都内置了它们(最后),因此您可以准确地看到正在发生的事情并检查变量等。

我敢说您至少有一个select值不是“新的”。因为你做了一个
返回true
else
子句中,第一个选择的值不是
'new'
将导致函数返回true

它看起来确实有一个错误的返回路线(如果在开始时有一个
'new'
选择,并且有一个值为
13
的代码选择),但可能测试中没有出现该测试用例


就找出这样的问题而言,没有什么比在一个像样的调试器中遍历代码并看着它逐行运行更合适的了。所有主要浏览器现在都内置了它们(最后),因此您可以准确地看到发生了什么,并检查变量等。

它返回
true
,因为在某个时刻,
if(value='new')
将把条件评估为
false
,因此,将代码流驱动到
else
分支。每当您必须注释块的结尾
“}”
时,通常意味着该块太长。脱离主题,但由于您似乎正在使用jQuery,您可以查看它的和函数,这可能有助于简化代码。它返回
true
,因为在某些情况下,
如果(value=='new')
将条件求值为
false
,从而将代码流驱动到
else
分支。任何时候都必须对结束
“}进行注释
对于一个块来说,这通常意味着该块太长。这是一个离题的问题,但当你似乎在使用jQuery时,你可以看看它的和函数,这可能有助于简化代码。很好,先生,非常好,谢谢大家的及时回复。读了你的描述后,我觉得脸红了。我把返回真状态移到了我身上为了达到预期的效果,我在最后一个For循环之外使用了nt。很好,先生,非常好,谢谢大家的及时回复。读了你的描述后,我觉得脸红了。为了达到预期的效果,我将return true语句移到最后一个For循环之外。