【问题标题】:Why am I getting a return of index two?为什么我得到索引二的回报?
【发布时间】:2020-05-05 22:38:57
【问题描述】:

我不明白为什么我的返回是索引 2 而不是 for of 循环中的索引 0。

function cardPicker() {
  let cards = [
    "2",
    "3",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "10",
    "J",
    "Q",
    "K",
    "A"
  ];
  for (p of cards) {
    return cards[p];
  }
}

【问题讨论】:

    标签: javascript arrays for-of-loop


    【解决方案1】:

    for ... of 循环遍历数组的,而不是索引。因此,您的循环返回数组中索引 2 处的值,即字符串“4”。如果你把它改成for ... in 循环,你会得到字符串“2”。当然,循环根本没有意义,因为循环唯一要做的就是return,所以它会在第一次迭代时退出。

    还应使用letvar 声明p

    【讨论】:

    • 谢谢。是的,我知道循环没有意义。我只是在我的整个代码中遇到了一个问题,这是一个我不理解的异常情况。
    • 非常有趣的问题,@pointy 你能解释一下为什么这段代码不能打印所有的值 function cardPicker() { let cards = [ "2", "3", "4", "5", “6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”、“A”]; for (let p of cards) { console.log(cards[p]); } }
    【解决方案2】:

    您的示例中的 p 将为“2”,因此您将返回数组的索引 2,该索引将返回“4”。

    【讨论】:

      【解决方案3】:

      改变这个:

      for (p of cards) {
         return cards[p];
      }
      

      到这里:

      for (p in cards) {
         return cards[p];
      }
      

      【讨论】:

      • 它仍然会返回“2”
      • 是的,你是对的。我不是 100% 确定 OP 要求说实话。
      猜你喜欢
      • 2015-03-23
      • 2012-02-05
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      相关资源
      最近更新 更多