Javascript 区别于;if(foo)bar()&引用;及;福安&;bar()&引用;
以下两个代码段之间有什么区别,或者有什么理由使用其中一个而不是另一个Javascript 区别于;if(foo)bar()&引用;及;福安&;bar()&引用;,javascript,Javascript,以下两个代码段之间有什么区别,或者有什么理由使用其中一个而不是另一个 if (foo) { bar(); } 第二种形式称为,其结果与第一种形式完全相同。然而,第一种形式更具可读性,并且应优先考虑可维护性 这种类型的短CUIRCIT求值通常出现在if语句中,其中右侧是有条件求值的。见下面的例子栏仅在foo计算结果为真时才计算 if (foo && bar()) { // ... } 版本foo&&bar()是一个表达式,因此有一个值: var result
if (foo) {
bar();
}
第二种形式称为,其结果与第一种形式完全相同。然而,第一种形式更具可读性,并且应优先考虑可维护性 这种类型的短CUIRCIT求值通常出现在if语句中,其中右侧是有条件求值的。见下面的例子栏仅在foo计算结果为真时才计算
if (foo && bar()) {
// ...
}
版本
foo&&bar()
是一个表达式,因此有一个值:
var result = foo && bar();
当使用if
版本时,上面可能是这样的:
var result;
if (foo) {
result = bar();
}
哪一个更详细。bouke的答案加上简短的CUIRCIT评估真的很好。但是我想补充一点,如果bar()的调用没有布尔返回值,并且不需要使用bar()满足进一步的条件,那么使用if语句是一种很好的编码风格。第一种更为传统。实际上,它们是一样的。没有区别,但我更喜欢一行
if
语句<代码>if(foo)bar()代码>从语法意义上讲,它并不完全相同。(表达式与语句)实际上foo&&bar()代码>是语句,不是表达式,foo&&bar()
是表达式。@zch正确。它是一个。如果版本不正确;如果foo是falsy,则返回该falsy值。因此,else{result=foo;}
。
var result;
if (foo) {
result = bar();
}