不同的方式检查是否一个数大于零(0)

问题描述 投票:-1回答:3

什么是使用条件,胁迫和布尔转换在检查大于零(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

是这些操作之间的差异? (在速度/性能,原理,实践等术语)

javascript if-statement type-conversion conditional coercion
3个回答
1
投票

这两个条件,强制使用JS布尔逻辑(你可以查询详细ECMA-262标准),而布尔构造函数,其实实现这个逻辑本身。

因此速度/性能比较 - >布尔()获得。原则/实践/等。 - >这取决于你按照codestyle


1
投票

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

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

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

1
投票

你提到的条件和胁迫是两种类型的隐式强制。

隐式强制是指键入不为可读或开发者友好的转换。而从我了解到,很多朝隐式强制仇恨来自于一个事实,即它并没有明确指定正在转换,因此可能造成不可预料或意外的结果。

布尔转换是强制转换,这意味着它是更具可读性为开发人员和指定什么是被转换(不像什么暗示)。

我没有在问候你对速度/性能的坚实答案和原则,但如果你很在意的可读性(以供将来参考或其他开发者)是布尔转换是要走的路。

© www.soinside.com 2019 - 2024. All rights reserved.