2013-10-28 127 views
4
var t = "TEST"; 
switch(t){ 
    case !"TEST": /* <- does not work. Can you check if t does NOT contain a string? */ 
     alert("t != TEST"); 
    break; 
} 

你可以用switch语句做到这一点吗?我可以在JavaScript switch语句中检查不等于吗?

+3

虽然'开关(真)'和与评估在JavaScript中真/假_works_逻辑表达式,然后有情况......这不是如何使用开关的“含义”。举个简单的例子,一个简单的if语句会更好。 – CBroe

+0

这个例子是从一个更复杂的案例中分离出来的。感谢评论CBroe! – subZero

+1

你为什么不使用'if'? – ComFreek

回答

4

您可以使用if。如果你喜欢开关,使用“默认”情况和条件,如果没有像

default: 
    if(n == -1){ 
     //Your code 
    } 
    break; 
+0

如果你走这条路线,你可能会抛弃switch语句而转向if else – jamiethepiper

3

你可以使用typeof运算:

<script> 
     var t =((typeof "Test")=='string')?true:false; 
     switch(t){ 
      case false: 
       alert("t != TEST"); 
       break; 
     } 
</script> 
3

case语句总是寻找正确的。既然你真的想检查变量是一个字符串(如我在你的代码的注释读),也许这种方法可以为你是正确的:

var t = "TEST"; 
switch(typeof t){ 
    case "string": 
    break; 
    default: 
     alert("t is not a string"); 
    break; 
} 

编辑
如果您有更多的真实代码中的情况,下面的代码可能会完成这项工作吗?

var t = "TEST"; 
switch(t){ 
    case t: 
     if ("string" != typeof t) { 
      alert("t is not a string"); 
      break; 
     } 
    case "TEST": 
     alert("case 2"); 
     break; 
    case "something_else": 
     alert("case 3"); 
     break; 
} 

下面是一个示例小提琴:http://jsfiddle.net/Rz7Sf/。用一个整数替换t变量值,你应该看到正确的警报。

1

比方说:

var t = "TEST"; 
switch(t){ 
    case "TEST": 
     break; 
    default: 
     alert("This is the case you want"); 
     break; 
} 
3

,你也可以这样做:

var str = "TEST"; 

switch (true) { 
    case (str !== "TEST") : 
     alert("str !== TEST"); 
     break; 
    case (str === null) : 
     alert("str is null"); 
     break; 
    default: 
     alert("default trigger"); 
} 
相关问题