你能反shorthand这个声明吗?

Can you un-shorthand this statement?

我正在尝试理解模块的这一部分:

(isOwner
    ? canSort || (revert = !rootEl.contains(dragEl)) 
    : (
        putSortable === this ||
        activeGroup.checkPull(this, activeSortable, dragEl, evt) && group.checkPut(this, activeSortable, dragEl, evt)
      )
)

有人可以 "un-shorthand" 这个给我吗?
这是 IF 语句的一部分,returns true/false。

看起来像这样:

if (isOwner) {
    if (canSort) {
      return true;
    } else {
      return (revert = !rootEl.contains(dragEl));
    }
} else {
  if (putSortable === this) {
    return true;
  } else {
    return activeGroup.checkPull(this, activeSortable, dragEl, evt) && group.checkPut(this, activeSortable, dragEl, evt);
  }
}

根据代码,它看起来像是在设置一个布尔值。如果你要展开它,它看起来像这样:

var something;
if (isOwner) {
  if (canSort != undefined && canSort !== 0) {
    something = true;
  }
  else {
    something = (revert = !rootEl.contains(dragEl));
  }
}
else {
  if (putSortable === this) {
    something = true;
  }
  else {
    something = (activeGroup.checkpull(this, activeSortable, dragEl, evt) && group.checkPut(this, activeSortable, dragEl, evt));
  }
}

首先,确保您了解 ternary operator 在 JavaScript 中的工作原理。

如果"isOwner"为真,它将return这样:

canSort || (revert = !rootEl.contains(dragEl)) 

否则,它将return这样:

putSortable === this ||
activeGroup.checkPull(this, activeSortable, dragEl, evt) && group.checkPut(this, activeSortable, dragEl, evt)