3

我想比较 3 个 javascript 变量值,它们相等,需要执行一个函数。

if(vcount === tcount === lcount){

//do something;
}

和(根据这个先前的答案

if((vcount == tcount) && (tcount == lcount)){

    //do something;
    }

但它不适合我。

4

4 回答 4

5

考虑以下代码-

1===1===1

由于===运算符是左右关联的,因此首先1===1评估的第一部分。

1===1返回true。然后有下面的对比

true===1

这绝对是false因为boolean true1考虑value 和 datatype不同。===

因此,只要第三个参数不是booleanfalse,如果您===用来比较它们,它肯定会返回。因此,您应该始终使用第二种语法来比较任何 3 个值。

于 2013-10-18T05:24:52.043 回答
2

尝试使用条件(三元)运算符 (?:) 会有所帮助。请参阅下面的示例这是替代解决方案的一种方式

<!DOCTYPE html>
<html>
<body>

<button onclick="myFunction()">Try it</button>

<p id="demo"></p>

<script>
function myFunction()
{
document.getElementById("demo").innerHTML= getResult(7,5,5);
}

function getResult(x,y,z){
 return x===y?x===z?true:false:false;
}

</script>

</body>
</html>
于 2013-10-18T04:15:11.797 回答
1

有多种方法可以做到这一点。我更喜欢这种方式来处理 n 个变量

    function isEqual1() {
        var val = arguments[0],
            equal = true;
        for (var i = 0; i < arguments.length; i++) {
            equal = (arguments[i] === val);
            if (!equal) return false;
        }
        return equal;
    }

别的

    function isEqual2() {
        var args = Array.prototype.slice.call(arguments, 0);
        var equal = args.join(',').replace(new RegExp(args[0], "ig"), '').replace(/,/g, "");
        return equal.length == 0;
    }

结果

    console.log(isEqual1(1, true, false, "xyz"));
    console.log(isEqual1(true, true, true, true));
    console.log(isEqual2(true, 123, true, true));
    console.log(isEqual2(true, true, true, true));

演示:http: //jsfiddle.net/p5aa7/7/

于 2013-10-18T04:50:54.433 回答
1

除了其他人所说的之外,请验证您的变量是正确的类型。例如,一个可能是字符,另一个可能是整数。尝试通过执行 toString(value) 或 parseInt(value,10) 来验证它们是否相同。

于 2013-10-18T04:42:14.740 回答