Javascript switch语句中的JS逻辑运算符-OR、AND(';|';';';';)
除注释中注意到的情况外,以下功能正常工作,即,对于每个数字:Javascript switch语句中的JS逻辑运算符-OR、AND(';|';';';';),javascript,switch-statement,logical-operators,Javascript,Switch Statement,Logical Operators,除注释中注意到的情况外,以下功能正常工作,即,对于每个数字: 如果这个数字可以被三整除,我想注销单词fizz,而不是那个数字 如果这个数字可以被5整除,我想注销单词buzz,而不是那个数字 如果一个数字可以被3和5整除,我想注销单词fizzbuzz,而不是那个数字 示例-1 const FizzBuzz=(num)=>{ 对于(设i=1;i例1中的代码有效,因为您打开了设置为0的变量foo。 第一种情况下的代码计算为0: 15 % 3 || 15 % 5 = 0 该值与foo进行比较,f
- 如果这个数字可以被三整除,我想注销单词
,而不是那个数字fizz
- 如果这个数字可以被5整除,我想注销单词
,而不是那个数字buzz
- 如果一个数字可以被3和5整除,我想注销单词
,而不是那个数字fizzbuzz
const FizzBuzz=(num)=>{
对于(设i=1;i例1中的代码有效,因为您打开了设置为0的变量foo。
第一种情况下的代码计算为0:
15 % 3 || 15 % 5 = 0
该值与foo进行比较,foo为0,因此JS代码进入第一种情况
在JavaScript中,逻辑OR运算符始终返回第一个“truthy”值
问题是您正在打开foo
,并且foo
为0,因此case
将在
计算结果为0
时运行
因此,案例i%3
在预期的情况下运行,因为您希望i%3
案例在其计算结果为0时运行。对于i%5
,情况也是如此
case (i % 3 || i % 5)
,当i
是15的倍数时,解析为
case (15 % 3 || 15 % 5)
->
因为0
是错误的,|
将意味着15%3
和15%5
必须是0
,才能将案例解析为0
(从而匹配foo
的0
)
如果使用了&&
,则&&
表达式将计算为第一个假值,而不是要求两个%
都解析为0
,例如当i
为3:
case (3 % 3 && 3 % 5)
->
->
然后匹配foo
的0
,尽管&&
中只有一个条件解析为0
这是非常不直观的。不要在这里使用switch
。如果必须使用switch
,我强烈建议将foo
设置为true
,并使用==0
测试:
const FizzBuzz=(num)=>{
例如(设i=1;例2中的情况正确,但例1中没有进行比较。(i%3 | i%5)
您需要使用==
否,对于本练习,您绝对不应该使用switch
。是的,没错!我一直忽略了0
等于false
,现在我了解到switch语句在大小写值与头表达式的匹配中有严格的比较。Thnx!希望如此这个问题对某人很有用。
case (0 || 0)
case (3 % 3 && 3 % 5)
case (0 && 2)
case 0