使用&&amp ;;时如何输出多个错误信息操作者

时间:2013-11-07 05:45:41

标签: javascript

if(isValid(id) && isValid(id2)) {
    //do sth..
}

我想检查id和id2是否有效,如果不是,它将输出错误消息并返回false。

短路评估的问题是,如果错误,只会输出一条错误消息。

如果它们都是假的,可以输出两条错误消息吗?

3 个答案:

答案 0 :(得分:0)

手动执行所有操作并计算错误:

var errors = 0;
if(!isValid(id)) {
    ++errors;
}
if(!isValid(id2)) {
    ++errors;
}
if(errors > 0) {
    // complain and return
}
// Do whatever needs to be done when everything is valid

答案 1 :(得分:0)

假设isValid显示错误消息,您需要确保在评估if之前发生所有方法调用。如果你想保持几乎相同的代码结构,这有点像黑客但有效。它的工作原理是创建一个包含所有结果的数组,然后查找错误项目。

if([isValid(id), isValid(id2)].indexOf(false) == -1) {
    //all items are valid
}

答案 2 :(得分:0)

var firstValid = false;
if (isValid(id) && (firstValid=true) && isValid(id2)){
  // do the things for everything is valid
}else if (!firstValid && isValid(id2)){
  // do other things
} 

或者怎么样

var firstValid = false;
if (isValid(id) && (firstValid=true) && isValid(id2) || firstValid && isValid(id2)){
 // do stuff 
}

我个人不建议这样做或实际生产代码中显示的任何其他技巧,尽管短路用于使您的代码更快。

可能更新UI应该在验证检查外部完成,或者可能应该对两者都进行单一检查以更新UI的正确部分。我不确定您的应用程序的完整细节,但我建议花更多的时间来思考您遇到问题的原因而不是解决问题的最佳方法。