三元运算符何时比简单的if-else块更差?

时间:2012-12-25 20:27:47

标签: operators block if-statement ternary-operator

我想知道:“三元运算符什么时候比使用'if-else'块更差?”

我想,它可能是调试时间(例如三元运算符不适合调试)

这样的美容有用吗?也许在某些情况下,简单的if-else块更适合使用?

谢谢

2 个答案:

答案 0 :(得分:6)

当您想有条件地评估两个简单表达式中的一个并对结果执行简单操作时(例如,将其分配给变量或将其返回),三元运算符非常有用。这样的事情是三元运算符的可接受用途:

var status = a.isActive() ? a.status : defaultStatus;

如果你的代码比这更复杂,那么使用if语句通常会更清楚,否则你可能会冒一个代码行尝试做太多的事情。这不仅仅是为了便于调试 - 具有复杂表达式的长线很难理解。

在许多语言中,不允许在? :表达式中使用语句(而不是表达式)。如果您需要执行一系列语句,那么除了使用if语句之外别无选择。

答案 1 :(得分:1)

三元组应仅用于单一语句中的非常简单的分支。我想说,每当你想要在多行上写一个三元组时为了清晰起见,是时候使用其他形式的分支了。我个人也发现复合三元运算符很难阅读并认为它是不好的形式。

忘了IDE。如果你必须能够完全打破调试器中的每一个小东西以理解你的代码,那么你就会遇到更大的结构问题。

在JavaScript中,当我根据函数参数进行设置时,我倾向于仅在函数开头的初始var声明块中使用三元组。它们主要评估非常简单的事情,如数组的长度,可选参数的存在或参数的类型。除了初始准备点之外,逻辑通常会变得更复杂或者需要不止一次简单的检查,因此使用基于块的切换结构或某种形式的映射拼出它更有意义。

但是首先考虑没有IDE的易读性。像没有IDE一样构建代码将始终帮助您更好地理解代码,IMO。