JavaScript 中的简写布尔逻辑
Posted
技术标签:
【中文标题】JavaScript 中的简写布尔逻辑【英文标题】:Short-hand boolean logic in JavaScript 【发布时间】:2017-02-18 19:09:56 【问题描述】:我是 javascript 和 AngularJS 的初学者。所以我遇到了亚当弗里曼书籍中的以下代码
var selectedCategory = null;
...
$scope.categoryFilterFn = function(product)
return selectedCategory == null ||
product.category === selectedCategory;
;
我对上面的return
语句感到困惑,你们能重新编写上面的代码吗?用清晰的代码(没有速记)。
谢谢。
【问题讨论】:
【参考方案1】:这是返回boolean
值的简写形式。仔细看:
return selectedCategory == null || product.category === selectedCategory;
这里,return
语句有两个表达式:
selectedCategory == null
product.category === selectedCategory
当方法返回时,它会分别计算这两个表达式。考虑你 selectedCategory
是 null
,而 product.category
等于 selectedCategory
那么语句是
return true || true;
最终会简化为
return true; // (true || true) = true
同样,您可以认为这个表达式通过替换值来返回值并分别计算它们。
更长的版本是:
if (selectedCategory == null || product.category == selectedCategory)
return true;
else
return false;
【讨论】:
长版本中不需要else
块。
@BenM 是的。我知道。把它放在那里是为了让 OP 更清楚,因为他是初学者。【参考方案2】:
return
语句可以很容易地重写为if()
块,如下所示:
$scope.categoryFilterFn = function(product)
if( selectedCategory == null || product.category === selectedCategory )
return true;
return false;
;
基本上,return
将返回 true
,如果 任一 指定条件是 true
。否则,它将返回false
。
【讨论】:
以上是关于JavaScript 中的简写布尔逻辑的主要内容,如果未能解决你的问题,请参考以下文章