【问题标题】:Using && as a replacement for IF statement使用 && 代替 IF 语句
【发布时间】:2014-06-05 22:04:29
【问题描述】:

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

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

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

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

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

  1. 这两种策略各有利弊吗?
  2. 如果第一个策略的唯一优点是返回值的能力,那么我发现的 sn-p 是否被认为是糟糕的编程,因为它更难阅读?

【问题讨论】:

标签: javascript conditional readability


【解决方案1】:

只是想指出这个成语的用法不太清楚,但更清楚。

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

我读了这篇文章,实际上不得不在我的脑海中将其转换为 if/else。 Steve McConnell 认为每件作品都应该有一行代码,我倾向于同意这一点,但这是荒谬的违反。另请注意,嵌入的副作用首先是有风险的,这非常令人震惊。

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

IMO 是一个更清晰的用法,部分原因是它是一个非常成熟的习语。或

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

是对成语的明确使用(例如,如果你使用undefined.company,你会得到一个例外)。

【讨论】:

  • 我想学习这个语法和其他有用的,用 && 缩短代码。我应该输入什么才能找到它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-16
相关资源
最近更新 更多