2012-06-13 2 views
7

Можно создать дубликат:
Is it safe to assume strict comparison in a Javascript switch statement?javascript switch/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

Да, типы сравниваются.

Если ввод равен предложению, определяемому оператором ===, , то установите для него значение true.

ECMA-262, страница 95.

1

Он проверяет типы, а также,

Пример:

var x = false; 

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

Live DEMO

И как спецификации говорит:

Если вход равен clauseSelector согласно определению === оператор, затем ...

Смежные вопросы