【问题标题】:if loops inside else block returns true instead of forced falseelse 块内的 if 循环返回 true 而不是强制 false
【发布时间】:2013-12-19 22:02:14
【问题描述】:

我有以下 javascript 代码块用于快速表单验证:

    if(IsEmail(email) == true && name.length > 0 && sport.length > 0) {
        return true;
    } else {

        if(name.length < 1){
            fields = fields.trim() + " Name, ";
        } 
        if(sport.length < 1) {
            fields = fields.trim() + " Sport, ";
        }
        if(!IsEmail(email)) {
            fields = fields.trim() + " Email, ";
        }
        alert("The following fields are invalid or missing: " +fields.trim());
        return false;
    }

由于某种原因,else 块的计算结果为 true,或者它永远不会到达 alert() 并且不会返回 false。表单已提交。如果我删除 if 语句,它会按预期工作并使用 alert() 返回 false。

有什么想法吗?

【问题讨论】:

  • 检查您的错误控制台。
  • 检查您的控制台。此外,(1)== true 是多余的;删除它,并且 (2) 如果您返回,则不需要 else

标签: javascript


【解决方案1】:

首先,如果带有return语句,不需要else语句。因为它只是没用。

我可以从上面的代码中得出的唯一原因是 if 块被执行。换句话说,如果语句是 true。所以流根本不进入其他地方。一种确定的方法是将警报作为 if 和 else 的第一行用于调试目的。

【讨论】:

  • 我喜欢添加false 以提高可读性。也许 OP 将他的验证函数检查为布尔值。这不是没用的。
  • @A1rPun 是的。这是不规范的和嘈杂的。
  • @DaveNewton 在花了一些时间弄清楚什么是非规范之后。我仍然相信return false 是要走的路。
  • @A1rPun ...返回不是问题,而是布尔值的非特定相等性和返回条件后不必要的“else”。
猜你喜欢
  • 2016-11-14
  • 2020-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-08
  • 1970-01-01
  • 2016-03-23
  • 2014-04-24
相关资源
最近更新 更多