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');
}