Почему ваш код не работает - когда вы передаете функцию в качестве аргумента другой функции с помощью скобок, например. doSomething ( someFunc() ) вы передаете результат функции.
Когда функция передается как объект, например. doSomething ( someFunc ) вы передаете обратный вызов. Этот способ someFunc передается как ссылка и выполняется где-то в вызывающей функции. Это то же самое, что и указатели на функции на других языках.
Общей ошибкой является использование этих двух функций, как показано на w3schools. Это делает неявный вызов eval.