Почему функции в JavaScript устанавливаются в глобальные переменные вместо простых функций?

Мне интересно, знает ли кто-нибудь, почему некоторые люди определяют глобальные переменные, которые настроены на функции, а не просто определяют глобальное имя функции. Например:

var foo = function() { alert('hello!'); }

вместо

function foo() { alert('hello!'); }

Не лучший ли второй метод, так как есть шанс, что что-то может переписать первую переменную, и вы потеряете эту функцию? Имеет ли это какое-либо отношение к расширению объектов? Есть ли проблемы с производительностью?