检查数字是否大于零(0)的不同方法

时间:2019-01-17 09:30:49

标签: javascript if-statement type-conversion conditional coercion

在检查数字类型是否大于零(0)时,使用 condition 胁迫 Boolean转换有什么区别?< / p>

每个人都会给出相同的输出

var zero = 0;
var three = 3;

// condition
zero > 0 //false
three > 0 //true
null > 0 //false

// coercion
zero ? true : false; //false
three ? true : false; //true
null ? true : false; //false

// Boolean conversion
Boolean(zero); //false
Boolean(three); //true
Boolean(null); //false

这些操作之间有什么区别? (在速度/性能,原则,实践等方面)

3 个答案:

答案 0 :(得分:1)

条件和强制都使用js布尔逻辑(您可以查看ECMA-262标准以了解更多详细信息),而布尔构造函数实际上是自行实现此逻辑的。

因此速度/性能-> Boolean()获胜。原则/做法/等->根据您遵循的代码样式

答案 1 :(得分:1)

在这种情况下,就速度/性能而言,布尔转换 isGreaterThanZero= Boolean(zero)最好,因为其背后没有逻辑条件(if..else)。

其余方法条件和强制转换由于其逻辑条件(if..else)而有点慢。

isGreaterThanZero= zero > 0
isGreaterThanZero= zero ? true : false

答案 2 :(得分:1)

您提到的

条件和强制都是隐式强制的类型。

隐含强制性指的是不易读或对开发人员不友好的类型转换。从我了解到的情况来看,对隐式强制的很多仇恨来自这样一个事实,即它没有确切指定要转换的内容,因此会产生意外或意外的结果。

布尔转换显式强制,这意味着开发人员更容易理解它,并指定要转换的内容(不同于隐含的内容)。

对于您的问题,我在速度/性能和原理方面没有可靠的答案,但是如果您担心可读性(供将来参考或其他开发人员),则布尔转换是要走的路。