none
【JS】javascript 中字符串不可以相等么? RRS feed

  • 问题

  • JS中判断两个对象都满足条件的逻辑运算符是 &&

    我是这样写的:

    if(passwordFlag!="0" && confirmPasswordFlag!="0")
        {
            alert('您的密码有误');
            $('password').focus();
            return false;
        }

    但是在判断时没有达到效果,似乎passwordFlag满足条件之后,就不判断后面的confirmPasswordFlag了,应怎样解决呢?

    有人说字符串不可以比较,说passwordFlag!="0"是错误的。请高手指教,我错在哪里?难道JS真的不能用于字符串之间的比较么?以前我都是这么用的啊,指教!

    • 已移动 Raymond TangModerator 2010年4月15日 11:28 (发件人:.NET Framework 一般性问题讨论区)
    2010年4月15日 8:29

答案

  • 字符串当然可以比较,

    在 C/C++/C#/javascript ... 等 C 家族语言中, && 即 与 操作,只要左操作数为 false 即返回,旧不会再进行右操作数比较,因为结果总是一样的,不管有操作数是 false 还是 true 不是吗?

     

    就不判断后面的confirmPasswordFlag了,应怎样解决呢?

    ====

    不知道你到底要什么结果,既然 passwordFlag!="0" 已经 false 为什么还要去运算 confirmPasswordFlag!="0"  ?

    忘了 javascript 是否支持布尔预算的 & 操作了,C# 支持,即两个操作数都会被评估,但是最终结果是一致的,只是想这样的表达式才有可能不同: if(DoMethod1() && DoMethod2()),当你的 DoMethod2 内部有对全局变量的修改,效果就出来,但这种写法应该被避免,只有在学校考试才会这样去考

    当然,有时候我们会充分利用 && 的这个特性,比如

    var s = null;
    if(s != null && s.length != 0) // 这里想象一下,假如两边都同时运算的时候,会什么结果?

     


    Hope Helpful | http://www.leoworks.net
    • 已标记为答案 jinwb1982 2010年4月16日 0:55
    2010年4月15日 9:06

全部回复

  • 字符串当然可以比较,

    在 C/C++/C#/javascript ... 等 C 家族语言中, && 即 与 操作,只要左操作数为 false 即返回,旧不会再进行右操作数比较,因为结果总是一样的,不管有操作数是 false 还是 true 不是吗?

     

    就不判断后面的confirmPasswordFlag了,应怎样解决呢?

    ====

    不知道你到底要什么结果,既然 passwordFlag!="0" 已经 false 为什么还要去运算 confirmPasswordFlag!="0"  ?

    忘了 javascript 是否支持布尔预算的 & 操作了,C# 支持,即两个操作数都会被评估,但是最终结果是一致的,只是想这样的表达式才有可能不同: if(DoMethod1() && DoMethod2()),当你的 DoMethod2 内部有对全局变量的修改,效果就出来,但这种写法应该被避免,只有在学校考试才会这样去考

    当然,有时候我们会充分利用 && 的这个特性,比如

    var s = null;
    if(s != null && s.length != 0) // 这里想象一下,假如两边都同时运算的时候,会什么结果?

     


    Hope Helpful | http://www.leoworks.net
    • 已标记为答案 jinwb1982 2010年4月16日 0:55
    2010年4月15日 9:06
  • 字符串当然可以比较,

    在 C/C++/C#/javascript ... 等 C 家族语言中, && 即 与 操作,只要左操作数为 false 即返回,旧不会再进行右操作数比较,因为结果总是一样的,不管有操作数是 false 还是 true 不是吗?

     

    就不判断后面的confirmPasswordFlag了,应怎样解决呢?

    ====

    不知道你到底要什么结果,既然 passwordFlag!="0" 已经 false 为什么还要去运算 confirmPasswordFlag!="0"  ?

    忘了 javascript 是否支持布尔预算的 & 操作了,C# 支持,即两个操作数都会被评估,但是最终结果是一致的,只是想这样的表达式才有可能不同: if(DoMethod1() && DoMethod2()),当你的 DoMethod2 内部有对全局变量的修改,效果就出来,但这种写法应该被避免,只有在学校考试才会这样去考

    当然,有时候我们会充分利用 && 的这个特性,比如

    var s = null;
    if(s != null && s.length != 0) // 这里想象一下,假如两边都同时运算的时候,会什么结果?

     


    Hope Helpful | http://www.leoworks.net
    如果照这位朋友那么说的话,if(s != null && s.length != 0) 应该是false喽
    2010年4月16日 0:56