#javascript #angularjs #boolean-logic #conditional-operator #shorthand
#javascript #angularjs #логическая логика #условный оператор #сокращение
Вопрос:
Я новичок в 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
Когда метод вернется, он будет оценивать эти два выражения отдельно. Рассмотрим, что yout selectedCategory
равно null
, и product.category
равно selectedCategory
, тогда оператор равен
return true || true;
что в конечном итоге упростит
return true; // (true || true) = true
Аналогично, вы можете представить, что это выражение возвращает значение, подставляя значения и оценивая их отдельно.
Более длинная версия для этого:
if (selectedCategory == null || product.category == selectedCategory) {
return true;
} else {
return false;
}
Комментарии:
1. В вашей длинной версии нет необходимости в
else
блоке.2. @BenM Да. Я знаю. Просто поместите это туда, чтобы быть более понятным для OP, поскольку он новичок.
Ответ №2:
return
Оператор может быть легко переписан как if()
блок следующим образом:
$scope.categoryFilterFn = function(product) {
if( selectedCategory == null || product.category === selectedCategory )
{
return true;
}
return false;
};
По сути, return
будет возвращено true
, если выполняется любое из указанных условий true
. В противном случае он вернется false
.