JavaScript 使用函数声明

JavaScript 使用函数声明

函数*声明 用于定义返回Generator对象的生成器。生成器在异步编程中非常强大,因为它们旨在解决回调问题。

在生成器中,使用 yield 关键字代替return。yield语句暂停函数的执行并将一个值返回给调用者,但保留足够的状态以使函数能够从上次执行状态恢复。因此,函数在上次yield运行后立即继续执行。使用 next() 方法返回一个具有两个属性done和value的对象,并可用于前进到生成器的下一个状态。

语法:

function* function_name(param1, param2...)
{
  function body
}

下面的示例演示了function*声明的使用。

示例1

这个示例展示了函数*的声明,以及yield和next()的使用。

<script> 
    // Declaring a generator function 
    function* generator(i) { 
      yield i; 
      yield i + 50; 
      yield i + 100; 
    } 
      
    // Initialize the generator 
    const generate = generator(50); 
      
    // Console out the object returned 
    // by the next() method 
    let nextValObj = generate.next(); 
      
    // Console out the value of the object 
    console.log(nextValObj.value); 
      
    // Console out next iterations 
    // of the generator 
    console.log(generate.next().value); 
    console.log(generate.next().value); 
      
    // This value would be undefined as 
    // the last defined one is i + 100 
    console.log(generate.next().value); 
</script>

输出:

50
100
150
undefined

示例2

此示例演示函数的声明*和yield和next()的使用。

<script> 
    function* powerup(n) { 
      for (let num = n; ; num *= n) { 
      
        // Yield out the current number 
        yield num; 
      } 
    } 
    for (let power of powerup(5)) { 
      
      // Break if the number is 
      // more than 1024 
      if (power > 1024) 
        break; 
      
      console.log("Yielded:", power) 
    } 
</script>

输出结果:

Yielded: 5
Yielded: 25
Yielded: 125
Yielded: 625

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程