Forum: PC-Programmierung JavaScript: reference to undefined property


von Davis (Gast)


Lesenswert?

Was bedeutet die JavaScript-Fehlermeldung:

ReferenceError: reference to undefined property?

Sie erscheint bei der folgenden Zeile:

1
 FD_Re[Bot] = FD_Re[Bot] - ReCosinus - ImSinus;

ReferenceError: reference to undefined property FD_Re[Bot]

Welche Eigenschaft ist gemeint?

Ersetzte ich die Variable Bot durch ein Literal geht es.

1
 FD_Re[1] = FD_Re[1] - ReCosinus - ImSinus;

von Markus M. (mark_m)


Lesenswert?

"Bot" scheint an dieser Stelle nicht bekannt zu sein! Wo hast Du "Bot" 
definiert? Ist "Bot" an dieser Stelle sichtbar?

Grüsse

von Davis (Gast)


Lesenswert?

Hier der Code:

[code]
var
  SinusT   = new Array (),
  CosinusT = new Array (),

  FD_Im    = new Array (),
  FD_Re    = new Array (),

  ED_Im    = new Array (),
  ED_Re    = new Array ();

function FFT()
{
var
  Stage,
  Group,
  G,
  Butterfly,
  B,
  Top,
  Bot,

  Sinus,
  Cosinus,

  P,

  Tp,

  ReSinus,
  ImCosinus,
  ImSinus,
  ReCosinus,

  I;

  I = 0;

  Group = Samples / 2;

  Butterfly = 1;
  for(Stage = 0; I < 6; I++)
    {
      Top = 0;
      Bot = Butterfly;
      for(G = 0; G < Group; G++)
        {
          P   = 0;
          for(B = 1; B <= Butterfly; B++)
            {
              Sinus     = SinusT[P];

              Cosinus   = CosinusT[P];

              ReSinus   = FD_Re[Bot] * Sinus;
              ImSinus   = FD_Im[Bot] * Sinus;
              ReCosinus = FD_Re[Bot] * Cosinus;
              ImCosinus = FD_Im[Bot] * Cosinus;

              ++I;

              FD_Re[Bot] = FD_Re[Top] - ReCosinus - ImSinus;
              FD_Im[Bot] = FD_Im[Top] - ImCosinus + ReSinus;

              FD_Re[Top] = FD_Re[Top] + ReCosinus + ImSinus;
              FD_Im[Top] = FD_Im[Top] + ImCosinus - ReSinus;

              ++Top;
              ++Bot;
              P += Group;
            };
          Top = Bot;
          Bot = Top + Butterfly;
        };
      Group     /= 2;
      Butterfly *= 2;
    };
}

[\code]

von Markus M. (mark_m)


Lesenswert?

Die oben beschrieben Code-Zeile existiert in deinem Listing nicht!

Welchen Inhalt hat das Array FD_RE[Bot] bei diesem Zugriff? Sieht so aus 
als würdest Du versuchen auf ein nicht vorhandenes Array Element 
zugreifen. Wo und wie wird dieses Array gefüllt?

- Was hat "Stage" in der ersten for-Schleife zu suchen?
- Die Manipulation der Variable "I" ist auch Grenzwertig!

Grüsse

von Davis (Gast)


Lesenswert?

Markus M. schrieb:
> Die oben beschrieben Code-Zeile existiert in deinem Listing nicht!

Zwischenzeitlich hatte ich mit den Variablen "gespielt".

> Welchen Inhalt hat das Array FD_RE[Bot] bei diesem Zugriff? Sieht so aus
> als würdest Du versuchen auf ein nicht vorhandenes Array Element
> zugreifen. Wo und wie wird dieses Array gefüllt?

Daran lag es! Danke für deinen Hinweis.

> - Was hat "Stage" in der ersten for-Schleife zu suchen?
> - Die Manipulation der Variable "I" ist auch Grenzwertig!

Warum?

von Markus M. (mark_m)


Lesenswert?

> Warum?
Du nutzt "I" als Laufvariable der ersten for-Schleife. Da sollte man es 
vermeiden den Inhalt der Variable "I" innerhalb der zweiten for-Schleife 
zu manipulieren! Also kein "++I".

Grüsse

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.