Menu
Coddy logo textTech

Логические операторы. Часть 3

Часть раздела Основы путешествия по JavaScript на Coddy — урок 21 из 77.

При работе с логическими выражениями иногда нам нужно упростить или перестроить их.

Если ! (не) стоит перед двумя условиями, соединенными && (и), вы можете разделить это на две отдельные части. && (и) становится || (или), и каждая часть получает свой собственный ! (не):

!(A && B) это то же самое, что и (!A) || (!B)

Например:

// Давайте проверим, что число НЕ (находится в диапазоне от 1 до 10)
let number = 15

// Эти два выражения эквивалентны:
let result1 = !(number >= 1 && number <= 10)
let result2 = !(number >= 1) || !(number <= 10)

console.log(result1)  // True
console.log(result2)  // True

Верно и обратное: !(A || B) — это то же самое, что и (!A) && (!B)

Например:

// Проверка, что человек НЕ является (студентом или трудоустроенным)
let is_student = false
let is_employed = false
// Эти два выражения эквивалентны:
let result1 = !(is_student || is_employed)
let result2 = !is_student && !is_employed

console.log(result1)  // True
console.log(result2)  // True
challenge icon

Задание

Новичок

Вы помогаете зоомагазину создать систему, чтобы определить, могут ли они продать питомца покупателю.

инициализируйте следующие переменные:

  • has_license со значением true
  • has_space со значением false
  • has_experience со значением true

Напишите следующие логические выражения, чтобы определить, если:

  • can_sell_regular_pet: Покупателю нужна ЛИБО лицензия, ИЛИ опыт, И у него должно быть место
  • can_sell_exotic_pet: Покупателю нужны И лицензия, И опыт, И у него должно быть место
  • cannot_sell_any_pet: У покупателя НЕТ лицензии И НЕТ опыта, ИЛИ НЕТ места

Шпаргалка

Законы Де Моргана позволяют упрощать логические выражения путем перемещения оператора ! (not):

!(A && B) это то же самое, что и (!A) || (!B)

// НЕ (между 1 и 10)
let result1 = !(number >= 1 && number <= 10)
let result2 = !(number >= 1) || !(number <= 10)  // эквивалентно

!(A || B) это то же самое, что и (!A) && (!B)

// НЕ (студент или трудоустроен)
let result1 = !(is_student || is_employed)
let result2 = !is_student && !is_employed  // эквивалентно

Попробуйте сами

// Инициализация переменных

// Расчет условий
let can_sell_regular_pet = 
let can_sell_exotic_pet = 
let cannot_sell_any_pet =

// Не удаляйте строки ниже
console.log("Can sell regular pet:", can_sell_regular_pet)
console.log("Can sell exotic pet:", can_sell_exotic_pet)
console.log("Cannot sell any pet:", cannot_sell_any_pet)
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы