0

我是JavaScript和AngularJS的初學者。所以我接觸之後,從亞當·弗里曼書JavaScript中的短手邏輯邏輯

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

我得到了return上述聲明混淆代碼,你們可以再上面寫有明確的代碼(沒有簡寫)代碼。

謝謝。

回答

3

這是返回boolean值的簡短形式。仔細一看:

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

這裏,return語句有兩個表達式:

  1. selectedCategory == null
  2. product.category === selectedCategory

當方法返回時,會單獨評估這兩個表達式。考慮YOUT selectedCategorynull,而product.category等於selectedCategory那麼該語句是

return true || true; 

這將最終簡化爲

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

同樣,你可以認爲這個表達式的替代值返回值和分別進行評估。

更長的版本是這樣的:

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

沒有必要在你的長版'else'塊。 – BenM

+0

@BenM是的。我知道。只要把它放在那裏,OP就更加清晰,因爲他是初學者。 –

2

return聲明可以很容易地重新寫成if()塊如下:

$scope.categoryFilterFn = function(product) { 

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

    return false; 
}; 

從本質上講,return是要返回true如果以下指定條件true。否則,它將返回false