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