函数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
语句?
答案 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语句有很多原因。
它绝对是个人选择,只要它们都给出相同的结果。