diese jsVar wird in einer anderen Datei deklariert und initialisiert.
Das Problem ist, dass der Code einen undefinierten Fehler auslöst, wenn dieser Code ausgeführt wird, bevor die andere Datei (wo sie deklariert und initialisiert ist) ausgeführt wird. Deshalb ist es von Try and Catch umgeben.
Was ist der beste Weg, um mit diesem undefinierten Fehler umzugehen, als zu versuchen, catch?
Ich verstehe es nicht. Wie kommt es, dass diese Frage auch nach der Markierung als Duplikat immer noch 48 Stimmen erhalten hat? Ist es nicht ein Mangel an Urteilsvermögen und verringert die Qualität dieser positiven Stimmen? Und dann könnte die Abstimmung fehlschlagen, wenn doppelte Fragen zu Stimmen führen.
– Jyotibist
19. Oktober 2018 um 22:34 Uhr
alex.zherdev
Sie können die Tatsache mit überprüfen
if (typeof jsVar == 'undefined') {
...
}
Hat das einen Vorteil gegenüber “meinem” Weg?
– Jan Hancic
31. Dezember 2009 um 9:54 Uhr
Es kann einen Fehler ausgeben: jsVar ist nicht definiert. Sie sollten es auf diese Weise testen: if (window.jsVar !== undefined) {}. Es scheint, als ob typeof() diesen Fehler “abfängt”.
– Fabien Menager
31. Dezember 2009 um 10:15 Uhr
@Fabien: Oder verwende vielleicht if(“jsVar” in window){}… aber ich würde Code vermeiden, der für diesen Fehlerfall Codierung erfordern würde.
– Thomas Eding
1. Januar 2010 um 9:51 Uhr
@logic-unit das ist theoretisch besser, aber == reicht für a typeof Vergleich, da es nur eine gibt wenige mögliche Werte das kann man zurückgeben.
– berbt
9. Mai 2014 um 20:00 Uhr
Mit typeof können Sie den Typ des nicht ausgewerteten Operanden bestimmen. Es gibt den Typ des Operanden in einer Zeichenfolge zurück. Sie können “===” verwenden, wenn Sie wissen, dass sie den gleichen Wert und den gleichen Typ haben.
– DevBert
30. Juli 2015 um 9:31 Uhr
Wie so oft bei JavaScript gibt es mehrere Möglichkeiten, dies zu tun:
typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window
Die ersten beiden sollten gleichwertig sein (solange foo wird nicht von einer lokalen Variablen überschattet), während die letzte zurückgegeben wird true wenn die globale Variable definiert, aber nicht initialisiert (oder explizit auf gesetzt ist undefined).
hmm ‘foo’ in Windows scheint false zurückzugeben, auch wenn foo für mich definiert ist, tatsächlich scheint nur typeof in meinem Fall zu funktionieren
– Sicherungsteam
29. Juli 2020 um 23:35 Uhr
Scott
In JavaScript bewirken die folgenden Werte die if Bedingung fehlschlagen und ihre Anweisung nicht ausführen: null, undefiniert, falsch, NaN, die Zahl 0 und die leere Zeichenkette ”.
Unter der Annahme, dass die Variable jsVar ein boolescher Wert ist und wir die Methode continue() aufrufen möchten, wenn jsVar wahr ist, können wir die folgende Überprüfung durchführen.
if (jsVar && jsVar == true)
proceed();
Das obige Code-Snippet überprüft zuerst, ob jsVar definiert wurde, und überprüft dann, ob sein Wert wahr ist. Die if-Bedingung wird nur erfüllt, wenn beide Bedingungen erfüllt sind.
Wenn jsVar kein boolescher Wert ist, können wir im obigen Code jsVar == true durch die entsprechende Prüfung ersetzen.
Denken Sie daran, dass dies nicht auf boolesche Werte prüft true da Sie keinen strengen Vergleich verwenden (in JS, z '1' == true ist wahr!); dies wird auch dann noch den Referenzfehler auslösen, wenn die Variable nicht definiert wurde, dh Ihr Code löst das Problem von Madhu nicht
– Christoph
31. Dezember 2009 um 10:46 Uhr
@Christoph du hast recht!
– Scott
31. Dezember 2009 um 13:54 Uhr
11591200cookie-checkUmgang mit ‘undefiniert’ in JavaScript [duplicate]yes
Ich verstehe es nicht. Wie kommt es, dass diese Frage auch nach der Markierung als Duplikat immer noch 48 Stimmen erhalten hat? Ist es nicht ein Mangel an Urteilsvermögen und verringert die Qualität dieser positiven Stimmen? Und dann könnte die Abstimmung fehlschlagen, wenn doppelte Fragen zu Stimmen führen.
– Jyotibist
19. Oktober 2018 um 22:34 Uhr