在JavaScript中使用双等于是否会导致性能问题?

在JavaScript中使用双等于是否会导致性能问题?,javascript,performance,if-statement,boolean,Javascript,Performance,If Statement,Boolean,根据JavaScript中的“严格模式”,在比较if语句中的值时,应该使用=。但是,在处理真实/虚假值时,这可能会导致很长的if语句: if(a!==null&&a!==undefined&&a!=''&&a!==0){} 为了解决这个问题,我已经开始使用 if(!!a==true){} 将值强制转换为布尔值。但是,我担心这会影响性能。根据我的JSPerf(),这种方法比长形式的if语句慢30% 我是不是离基地太远了?还有人注意到性能受到影响吗?使用if(!!a){确实会有显著的性能受到影响,因

根据JavaScript中的“严格模式”,在比较if语句中的值时,应该使用
=
。但是,在处理真实/虚假值时,这可能会导致很长的if语句:

if(a!==null&&a!==undefined&&a!=''&&a!==0){}

为了解决这个问题,我已经开始使用

if(!!a==true){}

将值强制转换为布尔值。但是,我担心这会影响性能。根据我的JSPerf(),这种方法比长形式的if语句慢30%


我是不是离基地太远了?还有人注意到性能受到影响吗?

使用
if(!!a){
确实会有显著的性能受到影响,因为您在执行
if(a)
时,JS在内部执行的布尔转换与执行
if(a)
时相同。执行显式类型检查(如
if(a==true)
if(a!==null&&a!==undefined)更有效

很少需要与
true
false
进行明确的比较。只需
if(a)
就可以了。如果使用
!!
那么就不需要
==true
==false
@PatrickEvans,如果不进行比较,也就不需要
!!
了。理论上
=
性能较差,因为它需要类型强制。但是
!!a
基本上做JS您是否使用过
=
(即将操作数转换为布尔值)。
if(a)
在严格模式下绝对、完全正常。事实上,使
if(!!a===true)
正常工作的行为正是使普通的
if(a)正常工作的原因
工作-应用程序
中的隐式真实性测试与
中的真实性测试完全相同,如果(a)
如果(a!=null)
如果(a!==null&&a!==undefined)
完全相同,这是值得的。