变量作为 Javascript 中的条件

问题描述

我正在尝试创建基于性别的简单名称生成器,我首先编写了创建性别的函数

function getGender () {
  var genders = ["Female","Male"]
  var gender = genders[Math.floor(Math.random() * genders.length)]
  return gender
}

然后我有条件,应该从第一个函数中选择根据性别调用函数

function getName() {
  if (gender = ["Male"]) {
    getFullName()
  } else {
    getFemaleFullName()
  }
}

但是 console.log 中的结果仍然是未定义的,但是对于其他函数,当我在 console.log 中调用它们时,它们会写下预期的结果。

解决方法

查看评论:

var genders = ["Female","Male"];
let gender = "";

function getGender () {
  gender = genders[Math.floor(Math.random() * genders.length)];
}

function getName() {
  // === is used to test strict equality
  // and you need to test for the string
  // that was in the array,not an array
  // that contains a string.
  if (gender === "Male") {
    console.log("Male was chosen.");
  } else {
    console.log("Female was chosen.");
  }
}

getName(getGender());

,

它显示未定义,因为你没有返回那个返回值的函数,你只是调用了那个函数

  function getName() {
  if (gender = ["Male"]) {
    getFullName()
  } else {
    getFemaleFullName()
  }
}

所以 console.log 没有得到任何价值,你可以这样做

 function getName() {
      if (gender = ["Male"]) {
        return getFullName()
      } else {
        return getFemaleFullName()
        }
 }

这是我给你的代码

function getGender() {
    const genders = ['Female','Male'];
    const gender = genders[Math.floor(Math.random() * genders.length)];
    return gender;
}

function getFullName() {
    return 'Male';
}

function getFemaleFullName() {
    return 'Female';
}

function getName() {
    if (getGender() == ['Male']) {
        return getFullName();
    } else {
        return getFemaleFullName();
    }
}

console.log(getName());