Ich verstehe, es ist eine Best Practice in Winkel zu verwenden $log
anstelle von console.log
. Allerdings kann ich keine gute Dokumentation finden, die die Gründe erklärt. Warum sollte ein Entwickler $log
verwenden?
Antwort
$log
prüft zuerst, ob der Browser console.log
unterstützt (IE 8, zum Beispiel, nicht). Dies verhindert, dass Fehler auf IE 8 angezeigt werden. Hinweis: Dies bedeutet nicht, dass es irgendetwas auf IE 8 protokolliert, es bedeutet einfach, dass es den Fehler nicht werfen wird.
Daneben können Sie auch decorate und Mock $log
zu erweitern und zu Testzwecken, wenn Sie so geneigt sind. Sie könnten es z. B. so einrichten, dass es sich bei IE 8 für ein Array anmeldet.
Ein Bonus-Feature: Wenn Sie es eine JavaScript Error
Instanz übergeben, wird es versuchen, es schön zu formatieren. Dies kann durch Lesen der source code herausgefunden werden.
EDIT: "Es ist nicht, dass IE 8 console.log nicht unterstützt. Es erstellt nur das Konsolenobjekt, bis die Dev-Tools geöffnet sind." Siehe Kommentare unten für weitere Details.
Nur abzuschließen @Steve's answer (was richtig ist), $log
hat auch den Vorteil, dass ausgeschaltet. Mit diesem Code können Sie die Protokollierung von $log
deaktivieren:
app.config(function($logProvider) {
$logProvider.debugEnabled(true);
});
Dies ist sehr praktisch, wenn man sich einmal alle Protokolle deaktivieren möchten, anstatt sie durch die Linie manuell Zeile zu löschen.
- 1. Warum verwenden Sie select() anstelle von sleep()?
- 2. Warum lange [] anstelle von Date [] verwenden?
- 3. Warum RDF anstelle von XML für das semantische Web verwenden
- 4. Warum Varnish anstelle von Symfony Proxy verwenden?
- 5. Warum "[*]" anstelle von "[]" im Funktionsprototyp verwenden?
- 6. Warum GWT.create() anstelle von neuen verwenden?
- 7. Warum rbegin() anstelle von end() - 1 verwenden?
- 8. Warum Function.prototype.bind anstelle von Function.prototype.call verwenden?
- 9. Warum verwenden C++ - Programmierer! = Anstelle von <
- 10. Warum JLE anstelle von JL verwenden?
- 11. Warum verwenden console.log() - Polyfills nicht Function.apply()?
- 12. Warum System.Threading.Interlocked.Decrement anstelle von minus verwenden?
- 13. Warum 'Funktionsadresse == NULL' anstelle von 'falsch' verwenden?
- 14. Verwenden Sie d3 Log-Skala anstelle der linearen Skala
- 15. Warum verwendet Angular Material2 ViewEncapsulation.None anstelle von Emulated oder Native?
- 16. Angular 1 Schaltfläche anstelle von 3
- 17. importiere {*} von "@angular" anstelle von "angular2"
- 18. Warum verwenden Sie {} anstelle von new Object() und verwenden Sie [] anstelle von new Array() und true/false anstelle von new Boolean()?
- 19. Warum Dom zum Parsen von Webseiten anstelle von Regex verwenden?
- 20. Nativescript Angular - Verwenden von Anwendungsereignissen
- 21. Warum Darcs anstelle von Git?
- 22. Verwenden Sie sha256 Hashes anstelle von Klartextpasswörtern
- 23. So verwenden Sie SensorManager.getOrientation() anstelle von TYPE_ORIENTATION
- 24. Warum druckt console.log() nichts?
- 25. Warum Klassenmethode anstelle von staticmethod?
- 26. Warum SQLBRITE und warum wir es anstelle von SQLite verwenden?
- 27. Verwenden Sie TypeScript lib.core.d.ts anstelle von lib.d.ts
- 28. Verwenden Sie äußere anstelle von expand.grid
- 29. Verwenden Sie datetime anstelle von mysql now()?
- 30. So verwenden Sie anstelle von IsNull
Danke. Vor allem, um mich zum Quellcode zu führen. Ich lerne, dass das oft der richtige Ort ist. – user3141592
Ich dachte mir, dass es mehr geben muss als nur fehlende Konsole zu vermeiden. Es gibt nicht viel, aber die Dekoration Tipper und Bonus-Feature, die Sie erwähnen, sind gut zu wissen. – user3141592
+1 Ich denke, es ist wichtig zu beachten, dass IE 8 'console.log' nicht unterstützt. Es erzeugt das "Konsolen" -Objekt erst, wenn die Dev-Tools geöffnet sind. 'console.log' wird in IE 8 unterstützt, solange die Dev-Tools geöffnet sind. Siehe [this] (http://stackoverflow.com/questions/690251/what-heppened-to-console-log-in-ie-8) Frage als Referenz ... – War10ck