React动画库中的一段代码求解释!

#1
function mergeChildMappings(prev, next) {
  prev = prev || {}
  next = next || {}

  function getValueForKey(key) {
    return key in next ? next[key] : prev[key]
  }

  // For each key of `next`, the list of keys to insert before that key in
  // the combined list
  let nextKeysPending = Object.create(null)

  let pendingKeys = []
  //  遍历prev对象
  for (let prevKey in prev) {
    if (prevKey in next) { //如果prevKey在next中
      if (pendingKeys.length) { //如果pendingKeys不为空,则将pendingKeys存入nextKeysPending[prevKey],并置pendingKeys为空
        nextKeysPending[prevKey] = pendingKeys
        pendingKeys = []
      }
    } else { //如果不在next中将其push到pendingKeys中
      pendingKeys.push(prevKey)
    }
  }

    // var prev = {"a":1,"b":2,"c":3,"d":4,"e":5,"f":6,"g":7,"h":8};
    // var next = {"c":300,"d":400,"g":700};
    // let nextKeysPending = Object.create(null)
    //
    // let pendingKeys = []
    // //  遍历prev对象
    // for (let prevKey in prev) {
    //     if (prevKey in next) { //如果prevKey在next中
    //         if (pendingKeys.length) { //如果pendingKeys不为空,则将pendingKeys存入nextKeysPending[prevKey],并置pendingKeys为空
    //             nextKeysPending[prevKey] = pendingKeys
    //             pendingKeys = []
    //         }
    //     } else { //如果不在next中将其push到pendingKeys中
    //         pendingKeys.push(prevKey)
    //     }
    // }

    // nextKeysPending = {
    //   c : ["a","b"],
    //   g : ["e","f"]
    // }

    // pendingKeys = ["h"]

    let i
  let childMapping = {}
  for (let nextKey in next) {
    if (nextKeysPending[nextKey]) {
      for (i = 0; i < nextKeysPending[nextKey].length; i++) {
        let pendingNextKey = nextKeysPending[nextKey][i]
        //  pendingNextKey存在于next,则取出存入childMapping[pendingNextKey]
        childMapping[nextKeysPending[nextKey][i]] = getValueForKey(
          pendingNextKey
        )
      }
    }
    //将例子中next.d的值赋值给合并之后的childMapping
    childMapping[nextKey] = getValueForKey(nextKey)
  }

  // 最后将pendingKeys保存的值赋值给childMapping
  // Finally, add the keys which didn't appear before any key in `next`
  for (i = 0; i < pendingKeys.length; i++) {
    childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i])
  }

  return childMapping
}

上面代码主要是将next合并到prev,为何会有如此复杂的逻辑,有什么其他考虑吗?
上面代码出自react官方推荐的动画库;