JS- Komischer Fehler bei Variable?

BeamerBen  26.04.2024, 21:58

Kannst du vielleicht dazu sagen, wie du darauf kommst, dass bei uname = … undefined kommt?

Robin808 
Fragesteller
 27.04.2024, 11:55

wenn ich alert(uname) mach, kommt undefined raus

3 Antworten

Ich kenne mich nicht genau aus, aber mit dem „let“ oben wird uname als Bool initialisiert. Versuch mal let uname = ““ (leerer String)

Woher ich das weiß:Hobby
BeamerBen  26.04.2024, 22:01

Hey, das macht (an sich) keinen Unterschied, in JS ist die Typisierung schwach und du kannst einer Variable einen Wert mit anderen Typen problemlos zuweisen.

1
Babbla  26.04.2024, 22:24
@BeamerBen

Alles klar, dann kann ich leider auch nicht weiterhelfen. Danke für den Hinweis!

0

Du schreibst eine asynchrone Funktion und definierst "undefined" als "komischer Fehler"?

Debugger hilft :)

function login() {
    var codeInput = "Jones";
    var response = '{"users":[' +
        '{"userName":"John","userCode":"Doe" },' +
        '{"userName":"Anna","userCode":"Smith" },' +
        '{"userName":"Peter","userCode":"Jones" }]}';

    var oJSON = JSON.parse(response);

    for (var i = 0; i < 3; i++) {
        if (oJSON.users[i]['userCode'] === codeInput) {
            var uname = oJSON.users[i]['userName'];
            console.log("Willkommen", uname);
            break;
        }
    }
}

Da ich nicht weiß, wie deine Struktur aussieht, habe ich es für mich abgespeckt.

Woher ich das weiß:Berufserfahrung – > 20 Jahre in der Softwareentwicklung
Robin808 
Fragesteller
 27.04.2024, 12:02

dann kommt trotzdem undefined.

0
BeamerBen  27.04.2024, 14:45

JWarum nutzt du var?

Der Fehler ist vermutlich dass der Fragesteller in dem scope eine lokale uname variable hat und versucht die außerhalb des scopes zu nutzen, vielleicht hat er eine andere variable die gleich heißt. Klingt für mich zumindest so?

ich sehe nicht was das mit async zu tun haben sollte.

0
cleanercode  27.04.2024, 21:35
@BeamerBen

Er versucht nichts außerhalb des Scopes zu nutzen, da das let im Funktionsblock ist und kein anderer Block definiert wurde.

ich sehe nicht was das mit async zu tun haben sollte.

Asynchrone Programmierung ist keine Disziplin für Anfänger - der Fehler, den der Fragesteller produzierte, ist ein Anfängerproblem. Siehe seine Antwort :)

1
BeamerBen  28.04.2024, 03:23
@cleanercode

Richtig, aber da Users aus einem json kommt (dass es irgendwelche Seiteneffekte über merkwürdige getter oder proxies gibt ist also ausgeschlossen) und er mit alert debugged kann es meiner Meinung nach nicht sein, dass er die richtige Variable debugged. Außer ich übersehe irgendeine Zuweisung.

0

Ich habe die Lösung gefunden. War ein dummer Fehler von mir.

Im Chatroom wurde der Benutzername über die "username"-Variable genommen. Da ich in der Funktion nur "uname" hatte, kam da undefined.

Aber trotzdem danke für eure Hilfe!

Woher ich das weiß:Hobby