在JavaScript中使用双等于是否会导致性能问题?
根据JavaScript中的“严格模式”,在比较if语句中的值时,应该使用在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){确实会有显著的性能受到影响,因
=
。但是,在处理真实/虚假值时,这可能会导致很长的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)
完全相同,这是值得的。