handleInternalEvent(evt)
.Прямая проверка срабатывает:
if (evt.name=="spectatorSwitched") {}
Однако вариантная проверка работать отказывается!
switch (evt.name) {
case "spectatorSwitched":
break;
}
Далее эксперементы показали, что необходимо приведение к строковому типу:
switch (String(evt.name)) { }
Делаем вывод - в неоднозначных и странных ситуациях первым делом приводим типы.
2 комментария:
как и во всех языках программирования, если внимательно читать документацию мы узнаем, что switch делает строгое сравнение (===), а вы делаете обычное (==), в результате чего интерпретатор пытается привести обе переменных к одинаковому типа. в данном случаи String.
Спасибо за подробность, никогда не придавал значения этой особенности switch, т.к. всегда старался избегать работы с нетипизированными переменными.
Тут же как раз тот случай, когда строгое сравнение === играет злую шутку.
Дело в том, что в других случаях switch в SFS работает как часы. И только тут - споткнулся.
Скорее всего строка приходит в параметр события не как стандартная а какая-нибудь java или как Object. Приводя ее явно к строковому типу, мы вызываем какойнть метод типа toString(), который в свою очередь возвращает правильный тип. Но это догадки...
Отправить комментарий