发电机功能 - 星上的=是什么意思?

时间:2016-05-19 09:41:35

标签: javascript ecmascript-6 generator

我正在浏览Nodeschool exercise on Generators

第二个练习的解决方案是:

function *factorial (n) {
  var result = 1;
  for (var i = 1; i <= n; i++) {
    result *= i;
    yield result;
  }
}

for (var n of factorial(5)) {
  console.log(n)
}

result *= i是什么意思?

3 个答案:

答案 0 :(得分:1)

* =是乘法赋值运算符,

result *= i等于result = result * i

来源mdn

答案 1 :(得分:1)

  

Object-Oriented JavaScript - Second Edition: 还有一系列运营商是a的组合   赋值和算术运算符。 这些被称为化合物   运营商即可。它们可以使您的代码更紧凑。

让我们看一些例子:

var a = 5;
a = a + 3; // 8

更短的方式:

var a = 5;
a += 3; // 8

在你的代码中:

result *= i; 

相当于:

result = result * i; 

答案 2 :(得分:0)

根据您的问题,我认为您对* function*上的generator感到困惑,这是*=的声明*。第二种情况中的a = a * b;<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>RDCS</title> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> <script src="js/ang.js"></script> </head> <body> <div align=center ng-app="myApp" ng-controller="myCtrl"> <h1>Student Record</h1> <form> Name: <input type="text" name="Name" ng-model="Name"><br><br> Class: <input type="text" name="Class" ng-model="Class"><br><br> Roll No:<input type="text" name="RollNo" ng-model="RollNo"><br><br> <input type="submit" value="Save" ng-click="submit()"> </form> </div> </body> </html> 的简写操作符,如前所述,但第二种情况是编译器将生成器与正常函数区分开来的标识符