Бросок в опцию, так как я не видел этого точного сценария. Если вы не хотите, чтобы c
обновлялся при обновлении a
или b
, тогда ES6 IIFE работает хорошо.
var foo = ((a,b) => ({
a,
b,
c: a + b
}))(a,b);
Для моих нужд у меня есть объект, относящийся к массиву, который в конечном итоге будет использоваться в цикле, поэтому я хочу только один раз рассчитать некоторую общую настройку, так что это то, что у меня есть :
let processingState = ((indexOfSelectedTier) => ({
selectedTier,
indexOfSelectedTier,
hasUpperTierSelection: tiers.slice(0,indexOfSelectedTier)
.some(t => pendingSelectedFiltersState[t.name]),
}))(tiers.indexOf(selectedTier));
Поскольку мне нужно установить свойство для indexOfSelectedTier
, и мне нужно использовать это значение при настройке свойства hasUpperTierSelection
, я сначала вычисляю это значение и передаю его как параметр для IIFE