[英]Different outputs using switch and if else statements in JavaScript
我是学习编程(特别是JavaScript)的初学者。 我在学习编码时遇到了一个小问题。 当我使用switch语句解决一个问题时,它会产生正确的输出。
var dateNow = 3; var dateSuffix; switch (dateNow) { case 1: case 21: case 31: dateSuffix = "st"; break; case 2: case 22: dateSuffix = "nd"; break; case 3: case 23: dateSuffix = "rd"; break; default: dateSuffix = "th"; break; } console.log("Today is the " + dateNow + dateSuffix + " day.");
但是当我对if else语句执行相同操作时,输出错误。
var dateNow = 3; var dateSuffix; if (dateNow == 1 || 21 || 31) { dateSuffix = "st"; } else if (dateNow == 2 || 22) { dateSuffix = "nd"; } else if (dateNow == 3 || 23) { dateSuffix = "rd"; } else { dateSuffix = "th"; } console.log("Today is " + dateNow + dateSuffix + " day of the month...");
任何人都可以指出我的if语句存在的问题吗?
您不能使用dateNow == 1 || 21 || 31
dateNow == 1 || 21 || 31
dateNow == 1 || 21 || 31
。
您需要使用[1,21,31].includes(dateNow)
或dateNow == 1 || dateNow == 21 || dateNow == 31
dateNow == 1 || dateNow == 21 || dateNow == 31
var dateNow = 3; var dateSuffix; if ([1,21,31].includes(dateNow)) { dateSuffix = "st"; } else if ([2,22].includes(dateNow)) { dateSuffix = "nd"; } else if ([3,23].includes(dateNow)) { dateSuffix = "rd"; } else { dateSuffix = "th"; } console.log("Today is " + dateNow + dateSuffix + " day of the month...");
var dateNow = 3; var dateSuffix; if (dateNow == 1 || dateNow ==21 || dateNow ==31) { dateSuffix = "st"; } else if (dateNow == 2 || dateNow ==22) { dateSuffix = "nd"; } else if (dateNow == 3 || dateNow ==23) { dateSuffix = "rd"; } else { dateSuffix = "th"; } console.log("Today is " + dateNow + dateSuffix + " day of the month...");
if (dateNow == 1 || 21 || 31) {
with是代码if (dateNow == 1 || dateNow ==21 || dateNow ==31) {
您的代码仅在条件满足时才触发
更新:如@Xufox所指出,此答案不正确。 这是错误的。
除了@Zenoo的答案,我还使用以下代码进行了测试:
dateNow = 2
console.log(dateNow == 1)
console.log(dateNow == 1 || 2)
console.log(true == 0)
console.log(true == 1)
console.log(true == 2)
结果:
false
2
false
true
false
我的解释是dateNow == 1 || 2
dateNow == 1 || 2
被视为(dateNow == 1) || 2
(dateNow == 1) || 2
如我们所见,这是错误的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.