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

Reply via email to