JavaScript básico - Patrón de devolución anticipado para funciones

Tell us what’s happening:

Describe tu problema en detalle aquí.

Your code so far

// Configuración
function abTest(a, b) {
  // Cambia solo el código debajo de esta línea
switch(a,b){
     case ((a = 2) && (b = 2)):
          return 8;
          break;
     case ((a = -2) || (b = -2)):
          return undefined ;
          break;
      case ((a = 2) && (b = 8)):
          return 18;
          break;
      case ((a = 3) && (b = 3)):
          return 12;
          break;
      case ((a = 0) && (b = 0)):
          return 0;
          break;
     
     }


  // Cambia solo el código encima de esta línea

  return Math.round(Math.pow(Math.sqrt(a) + Math.sqrt(b), 2));
}

abTest(2,2);

// * Aprobado:abTest(2, 2) debe devolver un número

  • Aprobado:abTest(2, 2) debe devolver 8

  • Falló:abTest(-2, 2) debe devolver undefined //Me dice que no estoy retornando este dato y no lo entiendo

  • Aprobado:abTest(2, -2) debe devolver undefined

  • Aprobado:abTest(2, 8) debe devolver 18

  • Aprobado:abTest(3, 3) debe devolver 12

  • Aprobado:abTest(0, 0) debe devolver 0

Your browser information:

El agente de usuario es: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0

Challenge Information:

JavaScript básico - Patrón de devolución anticipado para funciones

Hey @angelgonzalezgonzale ,

Esta solución no funciona porque en tu switch/case no puedes probar múltiples variables de esa manera. En lugar de pasar los argumentos a y b en tu switch, cámbialo a true. Tal como se muestra en esta respuesta de StackOverflow:

let var1 = 2;
let var2 = 2;

switch(true) {
    case var1 === 1 || var2 === 1:
        console.log('1');
        break;
    case var1 === 2 || var2 === 2:
        console.log('2');
        break;
}

También considera que estás asignando en lugar de comparando en todos tus casos. Cambia el = por == o === para comparar en todos tus casos. Otro dato, si haces un return directo en cada caso, el break es innecesario. Cambiando esto, tu algortimo debería de pasar todas las pruebas.

Por otro lado y más importante: aplicar un switch/case para cada caso de las pruebas no es el propósito del ejercicio. Considera si en las pruebas se probaran 10, 100 o hasta 1000 pares de números, ¿se debería de agregar cada uno de esos casos? Pues no, resulta impráctico hacerlo así.

En lugar de un switch case, puedes aplicar un if. Dentro de este compara si a o b son menores a cero, y de ser así, retornas undefined.

Muchas gracias compañero te lo agradezco