【问题标题】:Using a function directly or by declaring it to a variable直接使用函数或将其声明为变量
【发布时间】:2022-06-10 21:24:29
【问题描述】:

我是软件开发的新手,并试图了解 JavaScript 的基础知识。在下面的代码中,如果我在“while”中编写 iterator.next() 而不是 charAt,结果会发生变化。你能解释一下为什么我直接输入 iterator.next 时它只返回 1 吗?

  const str = '123';
  const iterator = str[Symbol.iterator]()

  let charAt = iterator.next()

  while (!charAt.done) {
    console.log(charAt.value)
    charAt = iterator.next()
    // output: "1"
    //         "2"
    //         "3"
  }

  const str = '123';
  const iterator = str[Symbol.iterator]()

  let charAt = iterator.next()

  while (!iterator.next().done) {
    console.log(charAt.value)
    charAt = iterator.next()
    // output: "1"
  }

【问题讨论】:

    标签: javascript


    【解决方案1】:

    如果字符串更长,更容易查看。

      const str = '12345678';
      const iterator = str[Symbol.iterator]()
    
      let charAt = iterator.next()
    
      while (!iterator.next().done) {
        console.log(charAt.value)
        charAt = iterator.next()
        // output: "1"
      }

    因为您在循环内的两个不同位置(以及循环外一次)调用next(),所以每次绕过循环,您都会前进两个位置。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-05
      • 2019-04-25
      • 1970-01-01
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多