【问题标题】:Is there any difference these two pieces of js code?这两段js代码有什么区别吗?
【发布时间】:2012-09-22 14:56:03
【问题描述】:

你能告诉我以下两个代码的含义是否完全相同(在所有操作系统下,包括我无法测试的Mac)?

代码 1

if($('#mail1').val()==$('#mail2').val()){} 
else{
alert("Mail inputs don't match!");return;
}

代码 2

if($('#mail1').val()!=$('#mail2').val()){
alert("Mail inputs don't match!");return;} 

【问题讨论】:

    标签: javascript cross-browser cross-platform


    【解决方案1】:

    第一个代码是多余的,你不需要if-else,第二个更正确但更正确:

    if($('#mail1').val() !== $('#mail2').val()){
      alert("Mail inputs don't match!");
      return;
    } 
    

    【讨论】:

      【解决方案2】:

      你能告诉我以下两个代码的含义是否完全相同

      是的。

      我有时在代码中看到一个 empty if 块。我的猜测是一些开发人员发现它更容易阅读或 empty if 块用作未来的占位符。无论哪种方式,我都不使用或提倡这样的编码实践。

      【讨论】:

        【解决方案3】:

        确实如此,但您应该使用 === 而不是 == 或 !== 而不是 != 。 三等号避免了类型强制。

        【讨论】:

        • 虽然我同意 === 是一种很好的做法,但在这种情况下不会有强制,因为它总是一个字符串到字符串的比较。
        • 这是一个很好的编码习惯。显然 OP 是 JS 的新手,应该养成使用它的习惯。
        • 另外一点是,如果字段是多值字段,.val() 可能会返回一个数组。
        • 在多选的情况下,我建议强制使用==。想象一下,如果两个输入的值都为 "foo",但其中一个是倍数。 == 将对数组执行toString 转换,从而比较"foo" == "foo",这将提供所需的结果,因为从开发人员的角度来看,两个输入都分配了相同的值。但是严格的=== 会认为它们是不平等的,这对于预期的任务来说是一个奇怪的结果。
        【解决方案4】:

        这将是相同的。你有:

        if (something) then do nothing
        else do this-action
        

        if (not something) then do this-action
        

        一样,是吗?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-01-06
          • 2021-06-28
          • 2021-12-17
          • 1970-01-01
          相关资源
          最近更新 更多