选择篇(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






浏览 42
点赞
评论
收藏
分享

手机扫一扫分享

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

手机扫一扫分享

分享
举报