0

Я новичок в JavaScript и AngularJS. Поэтому я сталкиваюсь следующим код от Adam Freeman книгаКраткая логическая логика в 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 selectedCategory является null, а product.category равно selectedCategory то утверждение

return true || true; 

, который в конечном итоге упрощается

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

Кроме того, вы можете думать об этом выражения возвращают значение путем подстановки значений и оценивать их отдельно.

Longer версия для этого:

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

Там нет необходимости для 'else' блока в вашей длинной версии. – BenM

+0

@BenM Да. Я знаю. Просто поставьте его там, чтобы быть более понятным для ОП, поскольку он новичок. –

2

return заявление может быть переписана легко как if() блока следующим образом:

$scope.categoryFilterFn = function(product) { 

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

    return false; 
}; 

По существу, return собирается вернуться true если либо указанных условий true. В противном случае он вернется false.