我想比较三个变量是完全相同的。当然这是无法正常工作:
(a === b === c) // beware: true on (true === false === false)
所以我用了
(a === b && b === c)
但我想知道是否有更短的形式(如第一个 - 但正在工作),其中每个变量仅评估一次。
编辑:
我的用例是以下表达式:
(typeof a === typeof b && typeof b === typeof c)
我想避免
typeof b
两次typeof b
放入变量答案 0 :(得分:1)
不,对不起,没有。如果你真的想要,你可以做一个辅助功能:
function Test3(a,b,c) { return a === b && b === c; }
键入的时间会更短,但也有缺点:
为了解决所有这些缺点,我们可以这样写:
var b = ExpressionB;
if ( ExpressionA === b && ExpressionC === b ) { ... }
然而,这非常冗长并包含一个临时变量(无论如何都是不可避免的,因为你需要比较ExpressionB
两次,但只评估一次。)
答案 1 :(得分:1)
如果要比较任意数量的项目,可以使用比较其所有参数的函数。
function equal(){
var length = arguments.length,
first = arguments[0];
for(var i = 1;i<length;i++){
if (arguments[i] !== first){
return false;
}
}
return true;
}
并将其称为equal(a,b,c)
或equal(a,b,c,d,e,f,g,h,i,j)