if else验证方法之间的区别

时间:2016-09-13 09:27:29

标签: javascript validation if-statement conditional

是否有赞成或以某种方式进行简单验证?什么是最佳做法?你什么时候用一个而不是另一个?

第一种方法:

if ( <validate> ){
  submitForm();
} else {
  alert('Error');
    exitFn();
}

第二种方法:

if ( !<validate> ){
  alert('Error!');
    exitFn();
}

submitForm();

4 个答案:

答案 0 :(得分:1)

如果你想在未经验证的情况下退出该功能,那么它将被优化

if ( !<validate> ){
  alert('Error!');
  return;
}

submitForm();

答案 1 :(得分:1)

第二种方法称为守卫。它对于在函数顶部划分条件检查和错误处理的清晰块非常有用。

这是一种常见的模式,可以让人们在阅读代码时识别出来。

如果保护检查失败,保护检查就会离开,否则这两个代码块就不相同了。

示例:

function a(b, c) {
    if (b.length == 0) {
        alert("can't proceed, first argument is empty");
        return;
    }
    if (c.length == 0) {
        alert("can't proceed, second argument is empty");
        return;
    }
    doFancyStuff();
}

如果您要以第一种形式执行此操作,它将如下所示。

function a(b, c) {
    if (b.length == 0) {
        alert("can't proceed, first argument is empty");
    } else if (c.length == 0) {
        alert("can't proceed, second argument is empty");
    } else {
        doFancyStuff();
    }
}

答案 2 :(得分:1)

你实际上问了两个不同的问题:

  1. 在if-then-else结构中,一般情况下我应该首先处理错误条件,然后再处理正常流量,反之亦然?

  2. 如果我首先处理错误情况,我应该在处理后返回,还是将正常流逻辑放在else块中?

  3. 这些都是个人品味的问题。话虽如此,关于第一点,我认为你会发现许多程序员会先把错误处理。在第二点,意见分歧。关于此主题的Here is a question

    顺便说一句,我不知道你的意思或打算exitFn()。 JS中没有这样的功能。

    我个人的偏好,就是这样,将是:

    if ( !<validate> ) {
      alert('Error!');
      return;
    }
    
    submitForm();
    

    这里的优势在于错误处理通常更短,最好尽快将其排除在外,而不是强迫某人阅读您的代码,以查看如何(或者if)错误正在处理中;另外,将正常流量放在if内会增加额外的缩进水平。

答案 3 :(得分:0)

一般来说,这取决于具体情况 - 如果&#39;依赖&#39;它可能是有用的。如果你只是处理一个字符串,它本身就可以了,但最好通过捕获两个结果来处理更多的布尔函数。任何情况下你都有其他的&#39;或者其他如果&#39; (对于多个条件)意味着您可以更可靠地过滤,而不是仅仅拒绝输入

我不确定我对第二个例子感到满意,但这可能只取决于我对条件陈述的条件。

它确实打击了我的意见,而不是严格的正确/错误。