Вы должны отложить первый метод, поскольку второй создает функцию каждый раз, когда интерпретатор проходит эту строку.
Относительно вашего редактирования: мы все время находимся в одной и той же области видимости, так как JavaScript имеет область видимости функции вместо области видимости блока, так что может быть оптимизируемой, но я не встречал реализацию, которая не создавайте это каждый раз. Я бы порекомендовал не полагаться на эту (возможно, возможную) оптимизацию, поскольку реализации, в которых отсутствует поддержка, могут, вероятно, превысить пределы памяти, если вы будете широко использовать эту технику (что плохо, поскольку вы не знаете, какая реализация ее запустит, верно?).