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);
bound()
--> 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 ?
-- 
Jorge.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to