2016-05-19 2 views
1

Я иду через Nodeschool exercise on Generators.Функция генератора - Что означает звезда on = mean?

Решение второго упражнения заключается в следующем:

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 значит?

+0

это сокращение для 'результата = результата * i' – timolawl

+0

умножения. 'result = result * i' –

+3

Проверьте это: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Assignment_Operators#Multiplication_assignment – C2486

ответ

1

Object-Oriented JavaScript - Second Edition: Существует также семейство операторов, которые являются сочетанием назначение и арифметический оператор. Они называются соединениями операторами. Они могут сделать ваш код более компактным.

Давайте посмотрим некоторые из них с примерами:

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

более короткий путь:

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

В коде это:

result *= i; 

эквивалентно:

result = result * i; 
+3

Я чувствую себя дураком, я думаю, что звезда функция генератора портила мои основы:! Спасибо – Kayote

+0

Добро пожаловать. –

+0

damn, простой представитель! – rand

1

* = это оператор присваивания умножения,

result *= i равно result = result * i

источника mdn

0

Основываясь на ваш вопрос, я думаю, что вы перепутали * на function*, который, как вы объявляете generator, с этим в *=. * во втором случае является сокращенной оператор a = a * b;, как уже упоминался, но второй идентификатор для компилятора, чтобы отличить генератор от нормальной функции

Смежные вопросы