在Javascript中使用'if'语句与逻辑OR进行返回

时间:2015-10-29 13:07:14

标签: javascript

函数fnc()返回DOM元素或null。这是从另一个函数中调用的,当返回null时,没有其他任何事情要做。

由于null将始终评估为false且对象为true,因此以下内容将起作用:

var parentResult = fnc( arg ) || return false;
var childResult = fnc( parentResult.id ) || return false;

但是我从来没有在Javascript中看到过这种语法,相反它似乎总是被写成(给出或采用格式化,var关键字,以及条件中的显式=== null:< / p>

var parentResult = fnc( arg );
if( !parentResult ) { return false };
var childResult = fnc( parentResult.id );
if( !childResult ) { return false };

对我而言,前者更整洁,更具可读性,但必须有一个不使用的原因。

因此,如果可以依赖fnc()的返回值,是否有充分的理由不使用逻辑OR来终止函数而不是单独的if语句?

4 个答案:

答案 0 :(得分:3)

您无法在任何地方看到第一个示例,因为它是无效的JavaScript。 return是一个语句,它不能是表达式||)的一部分。

答案 1 :(得分:1)

这是无效的,你不能&#34;返回&#34;在作业中:

var parentResult = fnc( arg ) || return false;

但这是有效的,也是一个常见的习语:

var parentResult = fnc( arg ) || false;

你也可以这样做:

var parentResult = !!fnc( arg );

双重爆炸将价值转换为布尔值 - 这是一种诡计,所以有些人会说这是一个坏主意。

有很多选择。

答案 2 :(得分:0)

对于大多数人来说,源代码遵循自然语言越多,可读/可理解的越多。 冗长的表示法更像是自然语言:&#34;执行函数,如果结果为null,则停止&#34;。

答案 3 :(得分:0)

我会说逻辑OR经常使用,而且对于简短的说法,如果可能的话,我更喜欢它在一行上。有人可能选择使用if语句有很多原因。

  • 可读性即可。它更接近自然语言。
  • 可扩展即可。如果需要扩展条件或结果操作,并且无论如何都需要使用语句。
  • <强>一致性即可。也许围绕它的代码是使用if语句,而逻辑OR只是看起来不合适。
  • 无知即可。直到编码可能有6个月,我才知道逻辑OR。

它绝对是个人选择,只要它们都给出相同的结果。