Rick Waldron wrote:
On Sat, Sep 15, 2012 at 2:14 AM, Brendan Eich <[email protected]
<mailto:[email protected]>> wrote:
So to sum up:
1. Default parameter expressions are evaluated in the activation
scope, with all formal parameters bound, no use-before-set dead
zone (so formals are var-like), functions hoisted and in scope --
because in this case, simpler and worse are better.
2. Generator function with default parameters has implicit yield
after defaulting (which per 1 comes after function hoisting) --
because:
let n = 0;
function *gen(a = ++n) {}
for (let x of gen()) {}
assert(n === 1);
This is where I am currently, FWIW.
Apologies in advance for making you repeat yourself, but I just want
to circle back to the original question :)
The implicit yield means the thrower example will throw an exception
at loc 1, correct?
function thrower() {
throw "exception";
}
function * G(arg = thrower()) {
yield arg;
}
let g = G(); // Exception seen here?
Yes, back to loc 1. Kevin Smith made the
function* g(a, b = makeTheWorldABetterPlace()) { ... }
let iter = g(123);
// Is the world a better place yet? I hope so.
case and I tried beefing it up with the empty generator and single
parameter with default value example (assert(n === 1) after, above).
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss