Первый вариант функции самый наглядный, плюс определение функции поднимается. Eval - зло, это все знают. Лучше создать одну "ленивую" функцию для таких целей:
function someFunc(choice) {
if (choice) {
//something something
} else {
// something something
}
someFunc = function() {
// новое тело фунции
};
}
Недостаток: свойства и методы созданные до первого вызова функции не сохранятся.