2012-06-13 74 views
7

可能重複:
Is it safe to assume strict comparison in a Javascript switch statement?javascript switch/case:是比較類型嗎?

難道一個開關/ case語句在javascript比較類型或只值?

換句話說,當我有以下代碼:

switch (variable) 
{ 
    case "0": [...] break; 
    case "1": [...] break; 
    default: [...] break; 
} 

是它等同於

if (variable == "0") 
{ 
    [...] 
} 
else if (variable == "1") 
{ 
    [...] 
} 
else 
{ 
    [...] 
} 

if (variable === "0") 
{ 
    [...] 
} 
else if (variable === "1") 
{ 
    [...] 
} 
else 
{ 
    [...] 
} 

編輯:有沒有辦法迫使比較值和類型一次?

+8

您可以輕鬆地測試它...... – gdoron

+3

是的,它會採取更少的時間來輸入一個的jsfiddle比它的問題:-) – Pointy

+0

@amnotiam鍵入。你是怎麼找到他們的...?你以前見過嗎? – gdoron

回答

9

是的,類型進行比較。

如果由操作者===定義輸入等於clauseSelector, 然後設置發現爲真。

ECMA-262,第95頁

1

它檢查類型以及,

實施例:

var x = false; 

switch (x) { 
case "": 
    alert('x'); /// Not happening 
    break; 
case false: 
    alert('y'); // happen 
    break; 
}​ 

Live DEMO

而作爲規範說:

如果輸入等於clauseSelector由限定===運營商,那麼...