我正在编写一个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'?
也许最后一个案例可以由编译器优化,但是当它是全局选项时,我想它会有所不同?
请与我分享您对此的看法。
答案 0 :(得分:0)
答案很简单。它不仅仅是编码模式,更多是关于逻辑。 在这种情况下,总有3种可能性,您需要满足每种可能性。 IE浏览器。 1. TRUE 2. FALSE 3. undefined 如果值未定义,那么您是否希望它属于true或false子句?或者它应该以不同的方式照顾吗?
要记住的另一个重要事项是,如果它未定义,那么它将始终执行false子句中的代码。这就是你想要的吗?
如果您知道该值将始终为true或false,那么我建议您仍然使用语法== true,因为这更具可读性。浏览代码的人会知道你正在寻找布尔值,而不是测试字段是否已经设置。
每次在if语句中都有一个布尔值时,你必须考虑这三种情况,所以你没有一个答案。