Я думаю, что основное отличие здесь заключается в намерении авторов :
1) Вы хотите передать некоторые утерянные свойства в функцию, что все они из одного источника данных - совпадение.
2) Вы передаете состояние вокруг. То, что функция разрушает это, означает, что она получает доступ только к определенным свойствам состояния, но автор предполагал, что объект состояния будет передан.
В этом случае я думаю, что позже применимо, и затем я бы пошел с этой версией (это также делает код немного более читабельным IMO).
Относительно "производительности" и "наилучшей практики":
У вас есть проблемы с производительностью? Если нет, почему ты беспокоишься? Если да, то эти две строки не являются причиной этого.
А «передовой опыт» всегда самоуверен, я бы посчитал обе версии действительными.