The yield keyword is used in a generator function to return an IteratorResult to the caller. It has no other purpose, and
if found outside such a function will raise a ReferenceError because it is then treated as an identifier.
function foo() {
for (var i = 0; i < 5; i++) {
yield i * 2;
}
}
function * foo() {
for (var i = 0; i < 5; i++) {
yield i * 2;
}
}