简体   繁体   English

使用JavaScript中的switch和if else语句的不同输出

[英]Different outputs using switch and if else statements in JavaScript

I am a beginner in learning programming, more specifically JavaScript. 我是学习编程(特别是JavaScript)的初学者。 I have come across a small problem while studying coding. 我在学习编码时遇到了一个小问题。 When I use switch statements to solve a piece of problem, it produces right output. 当我使用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."); 

But when I do the same with if else statements, the output is wrong. 但是当我对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..."); 

Could anyone please point out the problem with my if statements? 任何人都可以指出我的if语句存在的问题吗?

You can't use dateNow == 1 || 21 || 31 您不能使用dateNow == 1 || 21 || 31 dateNow == 1 || 21 || 31 dateNow == 1 || 21 || 31 . dateNow == 1 || 21 || 31

You need to use either [1,21,31].includes(dateNow) 您需要使用[1,21,31].includes(dateNow)

Or dateNow == 1 || dateNow == 21 || dateNow == 31 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..."); 
I replaced your code 我替换了您的代码

 if (dateNow == 1 || 21 || 31) { 

with is code if (dateNow == 1 || dateNow ==21 || dateNow ==31) { your code only trigger first if condition This code will help you with是代码if (dateNow == 1 || dateNow ==21 || dateNow ==31) {您的代码仅在条件满足时才触发

Update: As @Xufox pointed out, this answer is not true. 更新:如@Xufox所指出,此答案不正确。 This is false. 这是错误的。

In addition to @Zenoo's answer, I have tested with this code: 除了@Zenoo的答案,我还使用以下代码进行了测试:

dateNow = 2

console.log(dateNow == 1)
console.log(dateNow == 1 || 2)

console.log(true == 0)
console.log(true == 1)
console.log(true == 2)

Results: 结果:

false
2
false
true
false

My explanation is that dateNow == 1 || 2 我的解释是dateNow == 1 || 2 dateNow == 1 || 2 is treated as (dateNow == 1) || 2 dateNow == 1 || 2被视为(dateNow == 1) || 2 (dateNow == 1) || 2 which is false as we can see. (dateNow == 1) || 2如我们所见,这是错误的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 在javascript中使用if和else if语句? - using if and else if statements in javascript? 在 Javascript 中使用 Switch 语句 - Using Switch Statements in Javascript javascript- if / else,用于switch语句中的语句 - javascript- if/else, for statements inside a switch statement 为什么这两个 switch 语句向控制台提供不同的输出? - Why do these two switch statements give different outputs to console? 使用 if/else 语句的 Javascript 计算器 - Javascript Calculator using if/else statements Javascript - 我有 300 个 if/else 语句。 我应该改用 switch 吗? - Javascript - I have 300 if/else statements. Should I be using switch instead? Javascript(Discord 机器人)的新手,If-Else/Switch 语句不起作用 - New to Javascript (Discord bot), If-Else/Switch statements not working 除了 switch 和三元运算符之外,typescript 或 javascript 中嵌套 If else 语句的替代方法 - Alternative for nested If else statements in typescript or javascript otherthan switch and ternary operator 在 switch 语句中使用不同的数组 - Using different array's with switch statements Javascript:使用“ if…else”语句触发“ for”循环不起作用 - Javascript: Triggering “for” loop using “if…else” statements not working
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM