javascript – 使用\u0026\u0026作为IF语句的替代

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

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

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

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

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

>这两种策略都有任何利弊吗?
>如果第一个策略的唯一专业人员是能够返回一个值,那么我发现的片段是否被认为编程很差,因为它更难以阅读?

最佳答案 只是想指出这个成语的用法不太明确,而且更清晰.

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

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

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

IMO是一个更清晰的用途,部分原因在于它是如此成熟的习语.要么

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

是一个明确使用的习惯用法(例如,如果你做undefined.company,你会得到一个例外).

点赞