Difference between "if (foo) bar();" and "foo
Difference between "if (foo) bar();" and "foo && bar();"
以下两个片段之间有什么区别吗,或者有什么理由使用其中一个而不是另一个?
if (foo) {
bar();
}
foo && bar();
第二种形式被称为短路评估,其结果与第一种形式完全相同。然而,第一种形式可读性更强,应优先考虑可维护性。
这种类型的短循环求值经常出现在if语句中,其中右手是有条件求值的。请参阅下面的示例bar只有在foo计算结果为true时才会求值。
if (foo && bar()) {
// ...
}
版本foo && bar()
是一个表达式,因此具有一个值:
var result = foo && bar();
当使用if
版本时,上面可能看起来像这样:
var result;
if (foo) {
result = bar();
}
这更为冗长。
bouke的答案和简短的cuircuit评价真的很好。但我想补充一点,如果对bar()的调用没有布尔返回值,并且不需要使用bar()满足任何进一步的条件,那么一个好的编码风格就是使用if语句。
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- 可以设置“;文件名"发生错误时显示的内联脚本标记的
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 检测电话窃听,即:<a href="电话:xxx">在UIWebview上
- 使用“+="操作人员
- //而不是在src=“”上使用http://"属性
- "未捕获的语法错误:意外的标记}"
- 可以<脚本类型=“;text/javascript”>window.location=“/"</
- "实例范围”;TypeScript类的getter/setter
- Javascript复选框函数:;缺少:在属性id之后"
- "“;变量未引用正确的对象
- "日期“;AJAX请求返回的类型值未定义
- 得到"TypeError:无法读取属性'filename'未定义的“;调用“npm start
- Soundcloud api"未捕获的类型错误:无法读取属性'uri'“未定义”;
- "工具提示"jQuery插件坏了
- "锻造;React中的表达式
- JavaScript美学:;函数foo(){}"vs“;var foo=函数(){}"AMD功能
- jQuery"return{foo:bar,foo2:bar2}"-它是什么
- <a href="javascript:foo(this)">通过Window,我想要标记
- 在整个html文档中搜索精确的代码""<br>foo<br>"并将其