2013-10-28 135 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"); 
} 
相關問題