我有两个变量:var1
和var2
。
我找到了这个答案https://stackoverflow.com/a/9235320/3917754我尝试在我的案例中实现它:
switch (var1 | var2) {
case ('Contact' | true):
$('#btnCopyCompanyAddress').removeClass('hidden');
$('#btnCopyPersonalAddress').addClass('hidden');
break;
case ('Company' | true):
$('#btnCopyCompanyAddress').addClass('hidden');
$('#btnCopyPersonalAddress').removeClass('hidden');
break;
default:
$('#btnCopyCompanyAddress, #btnCopyPersonalAddress').addClass('hidden');
}
但即使var1
= Company
和var2
= true
,也始终会执行第一种情况。
答案 0 :(得分:0)
它始终与第一种情况相匹配,因为'any string string' | true === 1
结果总是1
。
按位运算符将两个值都视为字符串,因此解析字符串结果NaN
或0
和true
结果1
。结果将计算为NaN | 1
,结果为1
。(如果值为NaN
或Infinity
,则会将其转换为0
)
参考:Bitwise operations on non numbers
因此在这种情况下不起作用,而是尝试连接。
switch (var1 + var2) {
case ('Contacttrue'):
$('#btnCopyCompanyAddress').removeClass('hidden');
$('#btnCopyPersonalAddress').addClass('hidden');
break;
case ('Companytrue'):
$('#btnCopyCompanyAddress').addClass('hidden');
$('#btnCopyPersonalAddress').removeClass('hidden');
break;
default:
$('#btnCopyCompanyAddress, #btnCopyPersonalAddress').addClass('hidden');
}

答案 1 :(得分:0)
您可以使用“+”代替“|” :
function Check(var1, var2) {
switch (var1 + var2) {
case ('Contact' + var2):
alert('1');
break;
case ('Company' + var2):
alert('2');
break;
default:
alert('0');
}
}