返回函数不返回任何内容

时间:2018-11-22 15:14:27

标签: javascript function return

我正在js中使用此函数(它应该返回特殊主题):

function getSubjectByNumber(subject_number) {

  var subject_name;

  if (subject_number === 0) {
    return subject_name = "Deutsch";
  }
  if (subject_number === 1) {
    return subject_name = "Englisch";
  }
  if (subject_number === 2) {
    return subject_name = "Latein";
  }
  if (subject_number === 3) {
    return subject_name = "Kunst";
  }
  if (subject_number === 4) {
    return subject_name = "Musik";
  }
  if (subject_number === 5) {
    return subject_name = "Instrument/G. (Additum)";
  }
  if (subject_number === 6) {
    return subject_name = "Französisch (spät.)";
  }
  if (subject_number === 7) {
    return subject_name = "Theater und Film";
  }
  ..//That goes a long time...
}

然后用以下代码行调用return方法:

var subject_name = getSubjectByNumber(subject);   

但是正如我所见,它不返回任何内容(''),因为var subject_name始终为空。我希望有人能帮助我。提前谢谢。
〜mb

2 个答案:

答案 0 :(得分:1)

请考虑一个数组。

甚至不需要强制,所以只需执行以下操作-如您所见,0和“ 0”的作用相同

function getSubjectByNumber(subject_number) {
  return ["Deutsch","Englisch","..."][subject_number] || "not found";
}

console.log(
 0,   getSubjectByNumber(0),
 "0", getSubjectByNumber("0"),
 1, getSubjectByNumber(1),
 10, getSubjectByNumber(10) // not found
);

答案 1 :(得分:1)

您正在使用严格相等运算符(===),该运算符不对操作数进行任何类型转换。如果subject是一个字符串,那将可以解释它,因为"0" === 0false。在这种情况下,您需要将subject转换为数字(只要在+之前加上数字即可)或使用==进行转换检查是否相等。

但是,如果仅使用数组,则可以消除所有if/then逻辑以及字符串/数字问题。

let subjects = ["Deutsch", "Englisch", "Latein", "Kunst", "Musik", "Instrument/G. (Additum)", "Französisch (spät.)", "Theater und Film"];

function getSubjectByNumber(subject_number) {
  return subjects[subject_number];
}

console.log(getSubjectByNumber(0));
console.log(getSubjectByNumber("0"));
console.log(getSubjectByNumber(6));
console.log(getSubjectByNumber(7));