什么是使用条件,胁迫和布尔转换在检查大于零(0)的数类型之间的差异?
每个将给予相同的输出
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
是这些操作之间的差异? (在速度/性能,原理,实践等术语)
这两个条件,强制使用JS布尔逻辑(你可以查询详细ECMA-262标准),而布尔构造函数,其实实现这个逻辑本身。
因此速度/性能比较 - >布尔()获得。原则/实践/等。 - >这取决于你按照codestyle
在这种情况下,布尔转换isGreaterThanZero= Boolean(zero)
最好是在速度/性能方面,因为没有逻辑条件(的if..else)这背后。
而其余的方法条件和强制转换是有点慢,由于它的逻辑条件(的if..else)。
isGreaterThanZero= zero > 0
isGreaterThanZero= zero ? true : false
你提到的条件和胁迫是两种类型的隐式强制。
隐式强制是指键入不为可读或开发者友好的转换。而从我了解到,很多朝隐式强制仇恨来自于一个事实,即它并没有明确指定正在转换,因此可能造成不可预料或意外的结果。
布尔转换是强制转换,这意味着它是更具可读性为开发人员和指定什么是被转换(不像什么暗示)。
我没有在问候你对速度/性能的坚实答案和原则,但如果你很在意的可读性(以供将来参考或其他开发者)是布尔转换是要走的路。