三元运算符返回" true:false"。为什么?

时间:2014-06-12 15:50:43

标签: javascript node.js ternary-operator

Coworker让我grep for the string" true:false"通过我们的项目,我发现很多三元运算符返回显式的真或假。例如:

return this.state == Cursor.CLOSED ? true : false;

不仅仅是在我们的项目中,还有很多模块/库可以做到这一点。对我来说这似乎是多余的,因为作者可能只是这样写的:

return this.state == Cursor.CLOSED;

对Javascript中的某些问题进行防御性编码吗?或者只是明确你要回来的东西?

2 个答案:

答案 0 :(得分:9)

  

对Javascript中的某些问题采取防御性编码吗?

没有。 ==总是返回一个布尔值。

条件完全是多余的,被认为是一种不好的做法。 Simplify it!

答案 1 :(得分:3)

这是非常不必要的,但在许多语言中这是一个非常常见的错误†。因为相等运算符几乎完全用于条件,一些知识渊博的程序员不知道,更有经验的程序员偶尔会忘记它实际上可以用于它的价值。从来没有任何重要的JavaScript实现具有使得必要的怪癖。

†“错误”在这里感觉不友好,因为代码是正确的,只是不必要的冗长。但我想你知道我的意思。