该函数如何返回未定义?

时间:2019-05-11 01:26:06

标签: javascript arrays

这似乎很简单,但我不明白。为什么当我通过下面的函数传递b和c时,if语句返回true,而我使用return语句却得到未定义?

function stockList(arr1, arr2){
  arr1.forEach(function(elB){
     for (var elC in arr2){
       if (elB.charAt(0) === arr2[elC]){
        return "hello"
       }
     }
  })
}

b = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"]
c = ["A", "B"]

stockList(b,c)

我希望结果是“ hello”,但是我不确定。当我发现问题时,我有一种感觉,我会打我的头,然后“走”。感谢您的答复。

2 个答案:

答案 0 :(得分:1)

forEach不返回任何内容。使用两个for循环,也可以在函数结尾处添加一个包罗万象的return

function stockList(arr1, arr2) {
  for (var elB in arr1) {
    for (var elC in arr2) {
      if (arr1[elB].charAt(0) === arr2[elC]) {
        return "hello"
      }
    }
  }
  return "goodbye";
}

b = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"]
c = ["A", "B"]

console.log(stockList(b, c));

答案 1 :(得分:0)

您正在从内部函数forEach返回问候。 如果要从主函数返回问候,请不要使用forEach,请使用简单的for循环。