2

Primera vez que programo. Tengo un problema, usando un operador de desigualdad no puedo retornar el valor booleano esperado, ¿qué opinan?

function sonMedioHermanos (hijo1, hijo2) {

    return tienenLaMismaMadre !== tienenElMismoPadre;

    function tienenLaMismaMadre (hijo1, hijo2) {
        return madreDe(hijo1) === madreDe(hijo2);
    }

    function tienenElMismoPadre (hijo1, hijo2) {
        return padreDe(hijo1) === padreDe(hijo2);
    }

}
Joaquin
  • 23
  • 4
  • Bienvenido @Joaquin a Stack Overflow en español, te sugiero que hagas el [recorrido](https://es.stackoverflow.com/tour) y de paso ganes tu primera medalla, también es muy importante que leas [Cómo preguntar](https://es.stackoverflow.com/help/how-to-ask) y [Cómo crear un ejemplo mínimo, completo y verificable](https://es.stackoverflow.com/help/mcve) para poder mejorar tus preguntas y que sean bien recibidas por la comunidad, favoreciendo tus chances de obtener buenas respuestas. – HubertRonald Mar 24 '19 at 15:47
  • por favor lee [ask], edita tu pregunta y se mas claro con lo que intentas hacer –  Mar 24 '19 at 15:54
  • También considera usar == en vez de === – denifer santiago fernandez Mar 24 '19 at 16:39
  • @denifersantiagofernandez ¿por qué debería considerar eso? – Alvaro Montoro Mar 24 '19 at 17:42
  • @AlvaroMontoro Imagina que sus funciones crean un objeto y lo devuelven, como no ha dado ese código es una posibilidad que el comparador estricto no de el resultado que espera – denifer santiago fernandez Mar 24 '19 at 17:53
  • @denifersantiagofernandez en ese caso un operador == o === daría igual, ¿no? – Alvaro Montoro Mar 24 '19 at 18:12
  • Gracias, ahora edito la pregunta. Se supone que deberia devolver false si ambas proposiones son iguales, y true si son distintas. Como un operador XOR – Joaquin Mar 24 '19 at 18:48
  • @AlvaroMontoro https://es.stackoverflow.com/a/337 – denifer santiago fernandez Mar 24 '19 at 18:49
  • @AlvaroMontoro Las llaves no están mal puestas para ese escenario concreto, pero sí es raro definir esas funciones de manera anidada (podría interesar reusarlas) – Pablo Lozano Mar 25 '19 at 08:25
  • @PabloLozano tienes razón. No me había fijado bien. – Alvaro Montoro Mar 25 '19 at 11:24

1 Answers1

2

Te falta usar los parámetros, declaraste dos funciones pero no las estás llamando correctamente:

function sonMedioHermanos(hijo1, hijo2) {

    return tienenLaMismaMadre(hijo1, hijo2) !== tienenElMismoPadre(hijo1, hijo2);

    function tienenLaMismaMadre(hijo1, hijo2) {
        return madreDe(hijo1) === madreDe(hijo2);
    }

    function tienenElMismoPadre(hijo1, hijo2) {
        return padreDe(hijo1) === padreDe(hijo2);
    }

}
ElChiniNet
  • 3,215
  • 9
  • 25
Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87