当前位置: 首页 > 网络应用技术

JavaScript迭代器(迭代器)和发电机

时间:2023-03-06 14:37:00 网络应用技术

  说到迭代,也许大多数人都想到循环,但是迭代和周期不是等效的,循环是迭代机制的基础。那么什么是迭代?个人理解相同的部分是按顺序重复执行的,通常是在悬挂条件明确的情况下进行的。

  两个高级别的功能被添加到Ecmasixpript 6规范中:迭代器和发电机,迭代概念直接带入核心语言,并提供了一个定义周期的机制。

  本文将探讨这两个新功能。

  迭代协议专门分为迭代协议和迭代器。

  迭代协议允许JavaScript对象定义或自定义其迭代行为。

  如果对象成为可用对象,则必须实现该方法,即,对象(或原型链上的某个对象)必须具有一个键作为属性,该属性可以通过常数访问属性。

  一个对象成为迭代对象的条件:实现方法:无参数函数,其返回值是符合迭代器协议的对象。

  :一个没有参数或接受参数的函数,返回应具有以下两个属性的对象:

  以下代码中的对象符合迭代协议和迭代器协议:

  在JavaScript中,迭代器是一个定义序列的对象,并在悬挂式时可能会返回返回值。特别是,迭代器是通过使用方法的迭代器协议的对象。

  此外,迭代器是按需创建的一次性对象。east迭代器与迭代对象关联,迭代器将揭示迭代的迭代API,以迭代对象。迭代器不需要了解与之相关的迭代对象的结构,并且只有它需要知道如何获得连续价值。

  创建后,可以通过重复调用next()。迭代迭代器被称为该迭代器,因为它只能执行一次。: 真的}。

  例如,构建的迭代对象(数组)就是一个示例。它包含属性,调用方法将生成迭代器,然后使用迭代器的迭代器:

  如上所述,有必要实现迭代对象,并且必须将其实现为迭代器对象。因此,通常可以以以下形式编写自定义的迭代器。

  一些迭代器也在内部实现,并且将返回相同的迭代器。

  迭代设备中的可选方法用于指定迭代器预先关闭时执行的逻辑。

  提前关闭迭代器的情况包括:

  让计数=新计数器(3);for(让i的i){if(i> 1)

  休息;

  console.log(i);

  } // 1 //提前关闭!

  定制器是一个有用的工具,但是由于需要在显示屏中显示,因此需要仔细创建它。ES6提供了生成器结构。在介绍生成器函数之前,我们将介绍与生成器相关的一些基本知识。

  生成器对象是由发电机函数返回的迭代器,并且符合迭代协议和迭代器。

  生成器的原型包含以下三种方法:

  方法返回一个包含属性和属性的对象。此方法还可以传递参数以将值传递给生成器。

  语法:

  令geen = generator();//“ generator {}” console.log(geen.next(10));// {值:1,do:false} console.log(gen.next(9)); // {值:2,完成:false} console.log(gen.next());// {值:3,完成:false} console.log(geen.next(8));

  // a = 9,b =不确定,c = 8 // {值:undefined,do:true}

  语法:

  语法:

  关键字实际返回一个具有两个属性的对象,并且该属性是表达式值的结果,但这意味着生成器函数尚未完全完成。

  *`farrevenrator`或迭代对象。

  :返回迭代对象的表达。

  var geen = generator();console.log(geen.next());// {值:1,do:false} console.log(geen.next());// {value:不确定,做:true}

  变量结果;

  function Generator(){result = farref emotengenerator();}

  var = generator();

  console.log(iterator.next());// {值:1,do:false} console.log(iterator.next());// {value:不确定,做:true}

  console.log(结果);//“ foo” //如果另一个Gianrator函数不显示“ foo”,则结果的值是未定义的

  //发电机函数表达式让GeneratorFn = function*(){}

  //作为一个对象属于该类型,生成了生成器函数OBJ = {

  //类方法方法类的生成器函数foo = {

  //创建Generator函数GeneratorFn = new GeneratorFunction();console.log(generatorFn);//?* anonymous(){}

  注意:不建议使用这种生成发电机功能的方法

  (1)生成器函数通常执行生成器函数:

  上述执行过程如下:

  (2)带有参数的发电机函数生成器也可以接收参数

  (3)每次调用发电机方法时,发电机悬架或结束的调节器都会执行,发电机将恢复执行,直到达到以下值:

  令geen = generator();//“生成器{}” //遇到屈服暂停并返回生成器的新值console.log(geen.next());// {值:1,do:false} console.log(geen.next());// {值:2,do:false}

  //到发电机函数的末尾,生成器的执行结束console.log(geen.next());// {value:不确定,做:true}

  令geen = generator();//“ generator {}” console.log(geen.next());// {值:1,do:false} console.log(geen.next())); error console.log(geen.next());//此语句将不会继续执行

  另外,如果提供了参数,则如果提供了参数,则将参数设置为返回对象的属性值。

  当涉及到迭代器和发电机时,请了解以下内容

  该语句在迭代对象上创建一个迭代周期,调用自定义迭代钩,并执行每个不同属性的值的语句

  语法

  两者都是迭代的。它们之间的主要区别是它们的迭代。

  for(让i in arr){console.log(i);

  } // 0 // 1

  for(让ir){console.log(i);

  } // a // b