Почему в этом примере сбой строгой проверки на равенство не выполняется? - PullRequest
0 голосов
/ 05 декабря 2018

Если результат этого кода показывает, что случай переключения подразумевает строгую проверку на равенство ..

//code 1

switch(0)
{
case false: alert('NOT strict');
break;
case 0: alert('strict');    // shows up as expected
}

.. тогда почему результат второго из них говорит об обратном? ..происходит ли преобразование типов или что-то в этом роде?

// code 2

switch(0)
{
case 0: alert('may or may not be strict');    // I just added this case.. does it have an effect.. why?
case false: alert('NOT strict');    // this shows up!..
break;
case 0: alert('strict');    // ..instead of this!
}

примечание 1: Мой вопрос здесь не в том, происходит ли строгая проверка на равенство или нет ... Я уже посмотрел ответ на этот вопрос здесь.Мой вопрос ... почему это противоречие между двумя результатами?Разве код 2 не должен давать нам «строгий» вместо «НЕ строгий»?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

У вас нет оператора break, поэтому выполнение не выполняется .Это ничем не отличается от этого:

switch(0)
{
case 0:
  alert('case 0');
  // no break statement, so the next case runs if this one did
case 'bologna':
  alert('case bologna');
}
0 голосов
/ 05 декабря 2018

Во второй версии вы пропустили break в конце первого case 0:.Таким образом, он продолжается в следующем случае, не выполняя свой тест.Тогда оператор break не позволяет ему выполнить второй case 0:.

...