arrow function syntax simplified

Jorge jorge at
Mon Apr 2 02:07:32 PDT 2012

On Apr 2, 2012, at 6:48 AM, Dmitry Soshnikov wrote:
> P.S.:
> Offtopic footnote. 6 types:
> 1. Function Declaration (FD). Features: "hoisting", always named.
> 2. Function Expression (FE). Features: no "hoisting", available for immediately invoked functions (IIF).
> 3. Named Function Expressions (NFE). Features: no "hoisting", the same as FE actually, but because of many old (?) bugs/features, especially in IE, I put them in the separate type. Since ES5 strict they are just FE if implemented correctly.
> 4. Functions created via Function constructor (FF). Features: only global in the scope chain.

And always anonymous.

> 5. Bound functions (BF). Features: captures `this', but "dynamic" `this' in case of `new', no `prototype', no [[Scope]], no [[Construct]], but delegation to the target's, etc.

No [[Scope]]? I must be missing something! Given this code:

bound= (function a(i) { return function b () { return i }.bind(null) })(27);
--> 27

How can bound() resolve `i` without a [[Scope]] ?

> 6. Arrow functions (AF). Features: captured `this', captured `this' even in case of `new'.

And [[Extensible]] === false... I wonder why, why non-extensible ?

More information about the es-discuss mailing list