选择篇(118)-输出什么?

共 2491字,需浏览 5分钟

 ·

2023-05-04 03:40

      
        function* generatorOne() {
      
      
          yield ['a', 'b', 'c'];
      
      
        }
      
      
        
          
function* generatorTwo() { yield* ['a', 'b', 'c']; }
const one = generatorOne() const two = generatorTwo()
console.log(one.next().value) console.log(two.next().value)
  • A:  a  and  a

  • B:  a  and  undefined

  • C:  ['a', 'b', 'c']  and  a

  • D:  a  and  ['a', 'b', 'c']

答案: C


通过  yield  关键字,我们在  Generator  函数里执行 yield 表达式。通过  yield*  关键字,我们可以在一个 Generator  函数里面执行( yield 表达式)另一个  Generator  函数,或可遍历的对象 (如数组).

在函数  generatorOne  中,我们通过  yield  关键字 yield 了一个完整的数组  ['a', 'b', 'c'] 。函数 one 通过 next 方法返回的对象的 value  属性的值 ( one.next().value ) 等价于数组  ['a', 'b', 'c'] .

      
        console.log(one.next().value) // ['a', 'b', 'c']
      
      
        console.log(one.next().value) // undefined
      
    

在函数  generatorTwo  中,我们使用  yield*  关键字。就相当于函数 two 第一个 yield 的值,等价于在迭代器中第一个  yield  的值。数组 ['a', 'b', 'c'] 就是这个迭代器。第一个  yield  的值就是  a ,所以我们第一次调用  two.next().value 时,就返回 a

      
        console.log(two.next().value) // 'a'
      
      
        console.log(two.next().value) // 'b'
      
      
        console.log(two.next().value) // 'c'
      
      
        console.log(two.next().value) // undefined
      
    


浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报