我是JavaScript和AngularJS的新手。所以我遇到了亚当·弗里曼书中的以下代码

var selectedCategory = null;
...
$scope.categoryFilterFn = function(product) {
   return selectedCategory == null ||
      product.category === selectedCategory;
};


我对上面的return语句感到困惑,你们能用清晰的代码(无速记)重新编写上面的代码。

谢谢。

最佳答案

这是返回boolean值的简写形式。仔细观察:

 return selectedCategory == null || product.category === selectedCategory;


在这里,return语句具有两个表达式:


selectedCategory == null
product.category === selectedCategory


方法返回时,它将分别计算这两个表达式。假设selectedCategorynull,并且product.category等于selectedCategory,则该语句是

return true || true;


最终将简化为

return true; // (true || true) = true


同样,您可以通过替换值并分别评估它们来考虑此表达式返回值。

更长的版本是:

if (selectedCategory == null || product.category == selectedCategory) {
  return true;
} else {
  return false;
}

09-27 21:51