【问题标题】:Can you un-shorthand this statement? [closed]你能取消简写这个陈述吗? [关闭]
【发布时间】:2017-02-07 00:44:28
【问题描述】:

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

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

有人可以为我“取消速记”吗?
这是 IF 语句的一部分,返回真/假。

【问题讨论】:

  • 哪一点你不明白?
  • 这种风格的写作让他不确定/无法理解逻辑 => 难以维护。
  • 嗯,是的。这就是 Delcon 提出这个问题的原因。
  • 是的!我从来没有和那些速记的人交朋友。

标签: javascript shorthand


【解决方案1】:

看起来像这样:

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);
  }
}

【讨论】:

    【解决方案2】:

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

    如果“isOwner”为真,它将返回:

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

    否则,它将返回:

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

    【讨论】:

      【解决方案3】:

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

      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));
        }
      }
      

      【讨论】:

        猜你喜欢
        • 2020-09-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-27
        • 1970-01-01
        • 1970-01-01
        • 2011-12-08
        • 2011-10-12
        • 2022-11-24
        相关资源
        最近更新 更多