使用&&作为IF声明的替代品

时间:2014-04-21 19:14:15

标签: javascript conditional readability

我在挖掘一些代码时发现了以下代码:

"string" != typeof myVar && (myVar = "");

我明白这里发生了什么。如果myVar不是字符串,则第一个条件的计算结果为true,因此评估第二个条件,导致myVar设置为“”。所以它基本上是以下内容的替代品:

if ("string" != typeof myVar)
    myVar = "";

唯一可辨别的区别是两个策略的前者也是一个return语句,尽管我发现的代码没有使用返回的值。所以我想知道:

  1. 这两种策略都有任何利弊吗?
  2. 如果第一个策略的唯一专业人员是能够返回一个值,我发现的片段是否因为阅读起来比较困难而认为编程很差?

1 个答案:

答案 0 :(得分:2)

只是想指出这个成语的用法不太明确,而且更清楚。

"string" != typeof myVar && (myVar = "");

我读过这个,实际上不得不将它转换为if / else。史蒂夫麦康奈尔认为,每个作品都应该有一行代码,我倾向于同意这一点,而这是违反法律的。另请注意,嵌入式副作用首先是冒险的,这非常令人震惊。

parameters = parameters || {};
var speed = parameters.speed || 60;

是IMO更明确的用途,部分原因在于它是如此成熟的习语。或

if(x && x.employer && x.employer.company === 'google') 

明确使用这个习语(例如,如果你undefined.company,你会得到一个例外)。