Hi, Thanks for the replies. I'm aware of the arrow functions, but the reason I don't use them here is that I wish to bind a custom context to the inner function (i.e. preserve the "this" passed while calling the inner function, like a custom context for promise callbacks for example) and use some variables in the outer function's context as well (might be a class method). Guess I should fallback to old "saving this to a variable" technique in this situation.
IMHO I don't think the default parameters should be evaluated within the context of the function being called, at least not while it's outside of function body's region...... Is there a specific reason to do that, or it's just a design preference? Yours, Charles Weng On Fri, Jan 29, 2016 at 9:27 PM Bergi <[email protected]> wrote: > ` Mystery . wrote: > > During the development of an ES6 web application, I came across a > situation > > where I wanted to bind 'this' of the outer function to a parameter of an > > inner function > > Use an arrow function for that: > ``` > function outer() { > const inner = (_this = this) => { > console.log(_this.a); // 1 > } > inner.call({}); > } > outer.call({a: 1}); > > > In the latest Firefox, the above script prints 'undefined'. This seems > > pretty counter-intuitive, and it also fails when I try to pass 'this.a' > as > > default value for the parameter of the inner function. I wonder if this > is > > an intended behavior? Thanks in advance. > > Yes, it is intended, and pretty intuitive - default initialisers are > evaluated in the scope of the called function, at the call - they're not > values that are computed at the time of the definition of the function. > > Regards, > Bergi > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

