ugrás a tartalomhoz

Bizarr viselkedés - WTF-JS

Endyl · 2010. Júl. 5. (H), 21.11
Egy igen bizarr viselkedésbe ütköztem, legalábbis ami a Firefox 3.6.6 verzióját illeti Windows SP3-on.

A helyzet az, hogy egy Webworkerben definiálok jópár konstanst, mindegyiket Number értékkel;
A kód számos részén használom ezeket a konstansokat sikeresen, ahol minden rendben működik.

Van azonban egy switch-em, nagyjából így.
/**
 * sok másik konstans definíció
 */
const PROBLEMAS_KONSTANS = 7;
const EGY_MASIK_KONSTANS = 8;
/**
 * stb, stb...
 */

cTipus = egyFuggveny(egyParameter);

switch (cTipus)
{
  case EGY_MASIK_KONSTANS:
  case PROBLEMAS_KONSTANS:
    // ide kéne jutni
    break;
  // Több case-ág, mind helyesen működik
  default:
    kimenetre(cTipus); 
}
Lényeg a lényeg, cTipus értéke hiába egyezik meg PROBLEMAS_KONSTANS értékével, nem fut le az adott case-ág, hanem a default, ahol kiírja cTipus értékét, ami egyezik PROBLEMAS_KONSTANS értékével.

Minden más esetben a switch rendesen működik.

De a legfurcsább mind közül, hogy ha PROBLEMAS_KONSTANS-nak egy String értéket adok definícióban, akkor a helyes case-ág fut le és nem a default. Viszont bármilyen Number értékkel bukik a dolog.

A fájl UTF-8 BOM nélkül, de csak ASCII karakterek vannak benne, sorvég mindenhol egységesen CRLF.

Sajnos még ötletem sincs, hogy reprodukálni hogyan lehetne...

Valakinek ötlete, hogy ez hogyan jöhet össze?
 
1

egyFuggveny

Poetro · 2010. Júl. 5. (H), 21.51
Az egyFuggveny milyen típust ad vissza? Nem lehet hogy a kettő típusa nem egyezik meg? Biztos ami tuti, én azért ott szintén Number típust adnék vissza, amennyiben arra számítok.
2

milyen igaz

Endyl · 2010. Júl. 5. (H), 22.11
Lehet pihennem kéne kicsit; több helyen is átvertem magam az ellenőrzés során. De a lényeg, hogy az egyik ágon bizony String jött ki egyFuggveny-ből, máskor meg Number. Nem jó megfeledkezni a parseInt-ről...

Ezer hála!