我希望减少这里的行数。我们可以以更通用的方式获得它吗?
if ((method === "T" || method === "M") && !number) {
alerts.error("Please input phone number")
return;
}
if (method === "E" && !email) {
alerts.error("Please input Email")
return;
}
答案 0 :(得分:0)
我认为您要查找的是switch / case语句。
通常,您会执行以下操作:
switch(method) {
case 'T':
case 'M':
alerts.error('Please input phone number');
break;
case 'E':
alerts.error('Please input e-mail');
break;
}
由于您还有其他条件要检查,因此经常翻转开关/案例检查布尔值是很常见的:
switch(true) {
case (method === 'T' || method === 'M') && !number):
// etc.
}
答案 1 :(得分:0)
您可以通过多种方式清理此类代码以提高可读性。一种方法是使用布尔变量来更好地描述您的条件。
isNumber = (method === "T" || method === "M") && !number
isEmail = method === "E" && !email
if (isNumber) {
alerts.error("Please input phone number")
return;
}
if (isEmail) {
alerts.error("Please input Email")
return;
}
答案 2 :(得分:0)
要获得预期的结果,请在main if警报中使用if条件
if (((method === "T" || method === "M") && !number) || ((method === "E" && !email))) {
method === 'E'? alerts.error("Please input Email") : alerts.error("Please input phone number")
return;
}
工作代码示例
function test(){
method = 'E';
email = null;
number = null;
if (((method === "T" || method === "M") && !number) || ((method === "E" && !email))) {
method === 'E'? alert("Please input Email") : alert("Please input phone number")
return;
}
}
test()
答案 3 :(得分:0)
问题似乎与美学有关。如果是这样,则“匹配”成语可能起作用:
var err = method === "T" && !number ? "Please input phone number"
: method === "M" && !number ? "Please input phone number"
: method === "E" && !email ? "Please input Email"
: null;
if(err) return alerts.error(err);