在JavaScript中,每个“严格模式”,在比较if语句中的值时应使用===
。但是,在处理truthy / falsy值时,这会导致非常长的if语句:
if (a !== null && a !== undefined && a !== '' && a !== 0) {}
为了解决这个问题,我已经开始使用!!
if(!!a === true) {}
将值转换为布尔值。但是,我担心会对性能产生影响。根据我的JSPerf(http://jsperf.com/double-exclamation-vs-falsy/4),这种方法比if语句的长形式慢30%。
我离开基地吗?有没有人注意到性能受到了影响?
答案 0 :(得分:0)
使用if(!!a) {
确实会对性能产生重大影响,因为当您执行if(a)
时,您正在执行JS内部执行的相同布尔转换。像if(a === true)
或if(a !== null && a !== undefined)