我想比较 3 个 javascript 变量值,它们相等,需要执行一个函数。
if(vcount === tcount === lcount){
//do something;
}
和(根据这个先前的答案)
if((vcount == tcount) && (tcount == lcount)){
//do something;
}
但它不适合我。
我想比较 3 个 javascript 变量值,它们相等,需要执行一个函数。
if(vcount === tcount === lcount){
//do something;
}
和(根据这个先前的答案)
if((vcount == tcount) && (tcount == lcount)){
//do something;
}
但它不适合我。
考虑以下代码-
1===1===1
由于===
运算符是左右关联的,因此首先1===1
评估的第一部分。
1===1
返回true
。然后有下面的对比
true===1
这绝对是false
因为boolean true
与1
考虑value 和 datatype不同。===
boolean
false
,如果您===
用来比较它们,它肯定会返回。因此,您应该始终使用第二种语法来比较任何 3 个值。尝试使用条件(三元)运算符 (?:) 会有所帮助。请参阅下面的示例这是替代解决方案的一种方式
<!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>
有多种方法可以做到这一点。我更喜欢这种方式来处理 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/
除了其他人所说的之外,请验证您的变量是正确的类型。例如,一个可能是字符,另一个可能是整数。尝试通过执行 toString(value) 或 parseInt(value,10) 来验证它们是否相同。