调用开关盒内的函数



我正在尝试将以下if、else-if、else转换为switch语句。

if(zipValue === "") {
setErrorFor(zip, 'Please enter a zip code');
} else if (!isZip(zipValue)) {
setErrorFor(zip, 'Not a valid Aust zip code');
} else {
setSuccessFor(zip);
}

到目前为止,我已经尝试过:

switch (zipValue) {
case "":
setErrorFor(zip, 'Please enter a zip code');
break;
case !isZip(zipValue): //can't get this working
setErrorFor(zip, 'Not a valid Aust zip code');
break;
default:
setSuccessFor(zip);
break;

}

函数isZip检查正则表达式,如下所示:

function isZip(zip) {
return /^[0-9]{4}$/.test(zip);
}

原来的if,else-if,else正在工作,我只想了解更多关于使用switch语句的信息,并使我的代码更干净。非常感谢。

PS在发布这篇文章后,我现在看到了具有讽刺意味的是,switch语句使用了更多的代码行。

的case语句中的值!isZip(zipValue(总是会返回一个布尔值。我猜zipValue将始终是一个字符串。因此,case语句将永远不会运行,因为您正在比较两种不同数据类型的两个值。所以,如果有人输入了一个邮政编码,比如说12345,那么当它到达那个case块时,它将返回false。12345不等于错误

最新更新