JavaScriptES6 新语法

Posted のんきネコ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScriptES6 新语法相关的知识,希望对你有一定的参考价值。

function* 声明

function* 声明(function关键字后跟一个星号)定义一个generator(生成器)函数,返回一个Generator对象。

生成器是一种可以从中退出并在之后重新进入的函数。生成器的环境(绑定的变量)会在每次执行后被保存,下次进入时可继续使用。

调用一个生成器函数并不马上执行它的主体,而是返回一个这个生成器函数的迭代器(iterator)对象。当这个迭代器的next()方法被调用时,生成器函数的主体会被执行直至第一个yield表达式,该表达式定义了迭代器返回的值,或者,被 yield*委派至另一个生成器函数。next()方法返回一个对象,该对象有一个value属性,表示产出的值,和一个done属性,表示生成器是否已经产出了它最后的值。

yield

function* idMaker(){
  var index = 0;
  while(index<3)
    yield index++;
}

var gen = idMaker();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
console.log(gen.next().value); // undefined

yield*

function* anotherGenerator(i) {
  yield i + 1;
  yield i + 2;
  yield i + 3;
}

function* generator(i){
  yield i;
  yield* anotherGenerator(i);
  yield i + 10;
}

var gen = generator(10);

console.log(gen.next().value); // 10
console.log(gen.next().value); // 11
console.log(gen.next().value); // 12
console.log(gen.next().value); // 13
console.log(gen.next().value); // 20

  

以上是关于JavaScriptES6 新语法的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript ES6 - 这是扩展语法还是休息语法?

没有名称的Javascript ES6导入[重复]

JavaScriptES6 数据类型:Symbol

在下面的代码片段中的剩余 ='passthrough' 处的代码中出现语法错误

如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用

Javascript ES6 类属性赋值