Javascript switch语句不支持';当等价的if语句不起作用时,它不起作用
上述代码不会写入控制台,以下代码也不会写入控制台:Javascript switch语句不支持';当等价的if语句不起作用时,它不起作用,javascript,if-statement,switch-statement,conditional-statements,string-evaluation,Javascript,If Statement,Switch Statement,Conditional Statements,String Evaluation,上述代码不会写入控制台,以下代码也不会写入控制台: switch(type) { case 'home': console.log('home switch'); break; } 然而,以下情况确实存在: switch(type) { case "home": console.log('home switch'); break; } 我不知道为什么。这不是一个表演的障碍,我可以用if语句代替,但我真的
switch(type)
{
case 'home':
console.log('home switch');
break;
}
然而,以下情况确实存在:
switch(type)
{
case "home":
console.log('home switch');
break;
}
我不知道为什么。这不是一个表演的障碍,我可以用if
语句代替,但我真的很好奇为什么会这样
注:这些语句是一个直接替换,这里没有什么可考虑的。范围没有变化,没有代码我没有提到可能会干扰
type
的值,这不是等价的if语句。指定使用==
运算符。类型的类型是什么?它是一根绳子吗?一个对象?类型的确切值是多少,你是在动态地将值放入类型中吗?它对我两种代码都有效:你实际上是在使用字符串home
?或者它真的是一个不同的值吗?我将您的代码准确地复制到Firebug控制台中,并如您所述设置type=“home”
,然后它在所有三个实例中都触发了console.log()
语句。您是否尝试在开关之前签出console.log(type)
以查看值是多少?我没有意识到这一点。我刚刚将我的if
更改为使用==
,正如您所料,它不符合条件。我真的不明白这里发生了什么,这只是一个字符串-肯定===
会满意吗?如果不是的话,你怎么转换字符串的大小写?@DeeMac:看起来不是。请使用类型的示例值进行演示。还要测试console.log(typeof type)
。这不是解决OP问题的方法,但我今天学到了一些东西!您可以尝试switch(String(type)){…}
。@laaposto:在OP显示更多他的代码之前,我无法提供“解决方案”。它确实回答了“我不知道为什么”的问题:-)
if (type == 'home')
{
console.log('home if');
}