问题起源.alert( 1 == 1 == 1 == 1); //true
alert( 'x' == 'x' == 'x' == 'x'); //false天真的想这样比较4个字符串.发现这样写不能.有谁有简单点的写法呢?
难道非得//怎么写才简单点呢?判断几个字符串或数字是否相等
if( s1 == s2 && s1 == s3 && s1 == s4 && s2 == s3 && s2 == s4 && s3 == s4){}

解决方案 »

  1.   

    感觉是按顺序走的。
    alert(1==1==1==1)相当于
    alert(true==1==1)相当于
    alert(true==1)相当于
    alert(true)
    -------------------
    alert( 'x' == 'x' == 'x' == 'x')相当于
    alert( true == 'x' == 'x')相当于
    alert( false == 'x')相当于
    alert(false)
      

  2.   


    var fun=function(){
        var begin=arguments[0];
        for(var i=1;i<arguments.length;i++){
           if(begin!=arguments[i])
                 return false
        }
        return true;
    }
    var rs=fun(1,1,11,1);
    alert(rs)
      

  3.   

    呵呵。是的.不能的原因就是2楼说的那样.
    又想了一下.4个比的话.只有3个比较就可以了if(s1 == s2 && s1 == s3 && s1 == s4)有没有简单一点的写法哦
      

  4.   


      alert(5==5==5); //false
      alert(1==true==1);//true
      alert(1==true); true;
      //这能说这里的1被解析为true;
      alert(1====true);
      //这样就不会为true
    所以告诉你,只能这样写
    //怎么写才简单点呢?判断几个字符串或数字是否相等
    if( s1 == s2 && s1 == s3 && s1 == s4 && s2 == s3 && s2 == s4 && s3 == s4){}
      

  5.   


        var equal=function(){
            var arr=Array.prototype.slice.call(arguments);
            arr.sort();
            return arr[0]==arr[arr.length-1];
        }
        alert(equal("x","x","d"));
      

  6.   

    自定义比较函数!L@_@Kfunction multiValueEqual(v1, v2, v3, vN)
    {
    var re = false; if (arguments.length > 1)
    {
    var v = arguments[0];
    for (var i=1; i<arguments.length; i++)
    {
    re = v == arguments[i];
    }
    }

    return re;
    }alert(multiValueEqual("xx", "xx", "xx", "xx", "xx"));