console.log - он разный бывает, и файербаговский и хромовский и самописный встречается...
А функция делает следующее:
var Logger = {}; //создаётся объект Logger
Logger.log = function () { //создаётся функция log
if (window.console && console.log) { //проверяют наличие console вообще и console.log ы яастности.(если сразу проверять console.log при отсутствующем console - будет ошибка)
try {
console.log.apply(console, arguments) // пытаются передать все принятые функцией Logger.log аргументы по отдельности, как еслибы вызов шёл напрямую
} catch (e) { //если действие законцилось ошибкой(console.log почеу-то не захотел принимать много аргументов)
console.log(Array.slice(arguments)) //передаём в console.log массив состоящий из переданых аргументов
}
}
};