问题描述
我正在尝试创建基于性别的简单名称生成器,我首先编写了创建性别的函数
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());