Ich glaube nicht, dass es einen besonders besseren Weg gibt, Dinge zu tun, aber ich bin geneigt, undefiniert so viel wie möglich zu vermeiden. Vielleicht liegt es an einem starken OOP-Hintergrund.
Wenn ich versuche, OOP mit Javascript zu imitieren, würde ich explizit meine Variablen auf null deklarieren und initialisieren (genau wie OOP-Sprachen, wenn Sie eine Instanzvariable deklarieren, ohne sie explizit zu initialisieren). Wenn ich sie nicht initialisiere, warum sollte ich sie überhaupt erst erklären? Wenn Sie beim Debuggen keinen Wert für eine Variable festgelegt haben, die Sie beobachten, wird dies als nicht definiert angezeigt, unabhängig davon, ob Sie sie deklariert haben oder nicht ...
Ich ziehe halten undefined
für bestimmte Verhaltensweisen:
- , wenn Sie eine Methode aufrufen, jedes Argument Sie bieten keine undefinierten Wert haben würde. Gute Möglichkeit, ein optionales Argument zu haben und ein bestimmtes Verhalten zu implementieren, wenn das Argument nicht definiert ist.
- faul init ... in meinem Buch undefined bedeutet "nicht initialisiert: Go holen den Wert", und null bedeutet "initialisiert, aber der Wert war null (zB gab es vielleicht einen Serverfehler?)"
- arrays: myArray [myKey] === Null, wenn für diesen Schlüssel ein Nullwert vorhanden ist, undefiniert, wenn für diesen Schlüssel kein Wert festgelegt wurde.
aber vorsichtig sein, dass myVar == null
und myVar == undefined
denselben Wert zurückgeben, ob meineVar sonst nicht definiert, null oder etwas ist. Verwenden Sie ===
, wenn Sie wissen möchten, ob eine Variable nicht definiert ist.
Nur ein Hinweis ... ich denke, die ' "[object null]"' Ergebnis von 'toString() 'kann haben einige Browserinkompatibilitäten. –