Проблема в области видимости JS

номера в отеле вмещают не более 8-ми людей должен быть минимум один взрослый на одного взрослого может быть не более двух детей Считай недостающие аргументы за 0.

Примеры:

canTheyBook(0, 2) === false - 0 взрослых, 2 ребенка. Нарушение правил отеля.
canTheyBook(2, 4) === true - 2 взрослых, 4 ребенка. Бронирование разрешено.
canTheyBook(2) === true - 2 взрослых. Бронирование разрешено.
canTheyBook(9) === false - 9 взрослых. Превышено количество людей для одной комнаты.

function canTheyBook(adultsCount, childrenCount) {
  // write code here
  const ad = 0, ch = 0
  if (adultsCount === undefined){
    adultsCount = ad
  }
  if (childrenCount === undefined){
    childrenCount = ch
  }
 {
  if (
    (adultsCount == 0 && childrenCount > 0) || 
    ((adultsCount + childrenCount ) > 8) ||
    (childrenCount > (adultsCount * 2))
  ){
    return false
  }
  }
  return true
}

TEST 6 FAILED
input: adultsCount = 0, childrenCount = undefined
expected output: false

Свернуть
Expected:
false
Received:
true

Ответы (2 шт):

Автор решения: Essle Jaxcate

Не совсем понимаю при чем здесь "Проблема в области видимости JS", но вот рабочий код, который проверяет условия задачи

const canTheyBook = (adults = 0, children = 0) => (
  adults > 0 &&
  adults + children <= 8 &&
  children <= adults * 2
);

.

console.log(
    canTheyBook(),     // false
    canTheyBook(2),    // true
    canTheyBook(9),    // false
    canTheyBook(2, 1), // true
    canTheyBook(2, 5), // false
    canTheyBook(6, 3)  // false
);
→ Ссылка
Автор решения: wannacry

Не знаю правильно или нет, но работает)

function canTheyBook(adultsCount, childrenCount) {

  if (adultsCount=== undefined || adultsCount === 0){
    return false;
  }

  if (childrenCount === undefined){
childrenCount = 0;
  }

  if (adultsCount + childrenCount >= 9){
     return false;
  } else if ((adultsCount === 0 && childrenCount > 0 ) || (childrenCount > (adultsCount * 2))){
     return false;
  } else if (adultsCount >= 1 ){
    return true;
  } 
}
→ Ссылка