$log
first checks if the browser supports console.log
(IE 8, for example, doesn’t). This prevents errors being displayed on IE 8. Note: this doesn’t mean it will log anything on IE 8, it simply means it won’t throw the error.
Next to that, it also allows you to decorate and mock $log
for extending and testing purposes, if you are so inclined. You could for example decorate it to log to an array for IE 8 support.
A bonus feature: if you pass it a JavaScript Error
instance, it will attempt to format it nicely. This can be found out by reading the source code.
EDIT: “It is not that IE 8 doesn’t support console.log. It just doesn’t create the console object until the dev tools are opened.” See comments below for more details.