Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 区别于;if(foo)bar()&引用;及;福安&;bar()&引用;_Javascript - Fatal编程技术网

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();
}