&& оператор работает не так, как задумано - PullRequest
0 голосов
/ 24 августа 2018

не уверен, что моя ошибка в использовании оператора &&, но вывод неправильный.Вот мой код:

function calculateTriangleArea(x, y) {
  return x * y / 2
}

function calculateRectangleArea(x, y) {
  return x * y
}

function calculateCircleArea(x) {

  return Math.PI * x * x
}



if (function calculateRectangleArea(x, y) {
    calculateRectangleArea.name === true &&
      x > 0 && y > 0
  })
  (function calculateRectangleArea(x, y) {
    return [x * y]
  })
else if (function calculateTriangleArea(x, y) {
    calculateTriangleArea.name === true &&
      (x > 0 && y > 0)
  })
  (function calculateTriangleArea(x, y) {
    return [x * y / 2]
  })

else if (function calculateCircleArea(x, y) {
    calculateCircleArea.name === true &&
      x > 0
  })
  (function calculateCircleArea(x, y) {
    return [Math.PI * x * x]
  })
else {
  return undefined
}




console.log(calculateRectangleArea(10, 5)); // should print 50
console.log(calculateRectangleArea(1.5, 2.5)); // should print 3.75
console.log(calculateRectangleArea(10, -5)); // should print undefined

console.log(calculateTriangleArea(10, 5)); // should print 25
console.log(calculateTriangleArea(3, 2.5)); // should print 3.75
console.log(calculateTriangleArea(10, -5)); // should print undefined

console.log(calculateCircleArea(10)); // should print 314.159...
console.log(calculateCircleArea(3.5)); // should print 38.484...
console.log(calculateCircleArea(-1)); // should print undefined

Я пытаюсь заставить мои функции возвращать неопределенное значение, если переменные X или Y являются отрицательным целым числом.Сейчас он просто выводит целое число.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Исходя из вашего требования, что вы хотите, чтобы ваши функции возвращали неопределенное значение, если x или y отрицателен, я бы определил функции следующим образом:

function calculateTriangleArea(x, y) {
  if (x < 0 || y < 0) { //Check if x is < 0 or y is < 0
    return undefined; //Return undefined if that is true.
  }
  return x * y / 2; //Else calculate the output and return it
}

function calculateRectangleArea(x, y) {
  if (x < 0 || y < 0) {
    return undefined;
  }
  return x * y;
}

function calculateCircleArea(x) {
  if (x < 0) {
    return undefined;
  }

  return Math.PI * x * x;
}

console.log(calculateRectangleArea(10, 5)); // should print 50
console.log(calculateRectangleArea(1.5, 2.5)); // should print 3.75
console.log(calculateRectangleArea(10, -5)); // should print undefined

console.log(calculateTriangleArea(10, 5)); // should print 25
console.log(calculateTriangleArea(3, 2.5)); // should print 3.75
console.log(calculateTriangleArea(10, -5)); // should print undefined

console.log(calculateCircleArea(10)); // should print 314.159...
console.log(calculateCircleArea(3.5)); // should print 38.484...
console.log(calculateCircleArea(-1)); // should print undefined
0 голосов
/ 24 августа 2018

В ваших строках это выглядит так:

if (function calculateRectangleArea(x, y){

вы объявляете функцию.

Чтобы привести пример, вот что вы делаете:

function foo(x) {
  return x%2 ===0; // x is an even number; 
}

if (function foo(2)) {
  console.log("we got here"); 
}

Я только что получил синтаксическую ошибку.

Ваш код, вероятно, будет работать лучше, если вы удалите ключевое слово function, а именно:

if (calculateRectangleArea(x, y){
...