【发布时间】:2014-04-10 19:25:51
【问题描述】:
是否有一个简单的启发式来理解如何阅读嵌套的三元运算符? 我在某人的源代码中遇到了这个问题,无法理解。一个简单的三元很容易:
isRed = color == 'red' ? true : false
但是您如何阅读以下内容?我可以将第一个与最后一个对齐,第二个与倒数第二个对齐,还是必须将其解析为我脑海中的 if/else 树?
var offset =
( hasFrozenRows )
? ( options.frozenBottom )
? ( row >= actualFrozenRow )
? ( h < viewportTopH )
? ( actualFrozenRow * options.rowHeight )
: h
: 0
: ( row >= actualFrozenRow )
? frozenRowsHeight
: 0
: 0;
Retabred,可以是这个样子,几乎可以理解(?)
var offset =
( hasFrozenRows ) ?
( options frozenBottom ) ?
( row >= actualFrozenRow ) ?
( h < viewportTopH ) ?
( actualFrozenRow * options.rowHeight )
:
h
:
0
:
( row >= actualFrozenRow ) ?
frozenRowsHeight
:
0
:
0;
【问题讨论】:
-
如果我经营动物园,那将永远通过代码审查。
-
最低限度是缩进,但仍然不可读。
-
不需要括号:
isVisible = isOnScreen && notHidden ? true : false。但是你为什么要这样做呢?只是isVisible = isOnscreen && notHidden。但是您的根本问题是基本逻辑是如此扭曲,以至于它将从这里抛出错误直到永远。最好在更高的层次上重构它。 -
没有争论,@torazaburo。我只是想了解别人代码的意图。
-
这只是另一种混淆代码的方式。
标签: javascript ternary-operator ternary-tree