在检查数字类型是否大于零(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
这些操作之间有什么区别? (在速度/性能,原则,实践等方面)
答案 0 :(得分:1)
条件和强制都使用js布尔逻辑(您可以查看ECMA-262标准以了解更多详细信息),而布尔构造函数实际上是自行实现此逻辑的。
因此速度/性能-> Boolean()获胜。原则/做法/等->根据您遵循的代码样式
答案 1 :(得分:1)
在这种情况下,就速度/性能而言,布尔转换 isGreaterThanZero= Boolean(zero)
最好,因为其背后没有逻辑条件(if..else)。
其余方法条件和强制转换由于其逻辑条件(if..else)而有点慢。
isGreaterThanZero= zero > 0
isGreaterThanZero= zero ? true : false
答案 2 :(得分:1)
条件和强制都是隐式强制的类型。
隐含强制性指的是不易读或对开发人员不友好的类型转换。从我了解到的情况来看,对隐式强制的很多仇恨来自这样一个事实,即它没有确切指定要转换的内容,因此会产生意外或意外的结果。
布尔转换是显式强制,这意味着开发人员更容易理解它,并指定要转换的内容(不同于隐含的内容)。
对于您的问题,我在速度/性能和原理方面没有可靠的答案,但是如果您担心可读性(供将来参考或其他开发人员),则布尔转换是要走的路。