JavaScript中的短手布尔逻辑

时间:2016-10-10 11:13:33

标签: javascript angularjs boolean-logic conditional-operator shorthand

我是JavaScript和AngularJS的初学者。所以我遇到了来自Adam Freeman书籍的以下代码

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

我对上面的return声明感到困惑,你们可以重写上面的代码并使用清晰的代码(没有简写)。

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

  1. selectedCategory == null
  2. product.category === selectedCategory
  3. 当方法返回时,它将分别评估这两个表达式。请注意selectedCategorynull,而product.category等于selectedCategory,则语句为

    return true || true;
    

    最终会简化为

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

    同样,你可以通过替换值来考虑这个表达式的返回值并单独评估它们。

    更长的版本是:

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

答案 1 :(得分:2)

return语句可以轻松地重写为if()块,如下所示:

$scope.categoryFilterFn = function(product) {

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

   return false;
};

基本上,如果指定条件的 return,则true将返回true。否则,它将返回false