优化条件/如果块,从性能的角度来看哪个更好?

时间:2015-09-16 17:54:43

标签: javascript google-chrome firefox

我正在编写一个JS库,但有一段时间我已经想到了两件事。

考虑一个选项:

var option = { bool : true } ;

现在,想象一下我要么

if(option.bool) 

      or

if(option.bool === true) 

第一种情况,尽管确定它是是真还是假,我想是相当于:

var tmp = options.bool;
if ( tmp !== undefined && tmp !== null && ( tmp === true || tmp ... ) 

这意味着要尝试 options.bool = true ,在测试为true之前,必须检查undefined和not null。

因此后一种情况应该更具性能。但是,后一种情况需要更多的字符,如果重复多次会导致更大的lib。

但也许我的理解不正确。

现在,即使我这样做了:

var bool = window.t ? true : false; 

if ( bool === true ) // I still have to check for true to 'have the optmimal version'?

也许最后一个案例可以由编译器优化,但是当它是全局选项时,我想它会有所不同?

请与我分享您对此的看法。

1 个答案:

答案 0 :(得分:0)

答案很简单。它不仅仅是编码模式,更多是关于逻辑。 在这种情况下,总有3种可能性,您需要满足每种可能性。 IE浏览器。 1. TRUE 2. FALSE 3. undefined 如果值未定义,那么您是否希望它属于true或false子句?或者它应该以不同的方式照顾吗?

要记住的另一个重要事项是,如果它未定义,那么它将始终执行false子句中的代码。这就是你想要的吗?

如果您知道该值将始终为true或false,那么我建议您仍然使用语法== true,因为这更具可读性。浏览代码的人会知道你正在寻找布尔值,而不是测试字段是否已经设置。

每次在if语句中都有一个布尔值时,你必须考虑这三种情况,所以你没有一个答案。