While I appreciate your sentiment, and often relied on housing myself. These days I'd be inclined to continue with the classic funny definition and hosting, or more likely to break it into a separate, testable module.
Not to be contain. On Thu, Mar 29, 2018, 02:31 Michael Luder-Rosefield <[email protected]> wrote: > You're probably asking what on Earth the point of this is, and I'll tell > you: _hoisting_. > > My preferred ES5 code style was always to declare functions after their > use: > > ``` > doSomething1(); > doSomething2(); > > function doSomething1 () { > // ... > } > > function doSomething2 () { > // ... > } > > It keeps things uncluttered and readable: you don't have to read through > random functions before they are used, and have to work out what they're > doing there. > > If you're able to make use of ES6 arrow functions declared with > `const`/`let`, though, you would have to declare them before use. This > obviously goes against my preferred style, and can also result in > inconsistent placing of function declarations when mixed with conventional > functions. > > My proposal is simple: after the initial `function name (params)`, allow > the following forms: > 1. { // body code } > 2. => { // body code } > 3. => // expression ; > > 1. is of course the current form > 2. is similar, except it's a block body arrow function (all the usual > arrow function differences apply; this binding, cannot be used with 'new', > no 'arguments', no 'super'...) > 3. allows for concise body arrow functions - semi-colon at end. > > Example: > > ``` > // with proposal > doSomething1(); > doSomething2() > .then(doSomething3); > > function doSomething1 () { > // conventional function > } > > function doSomething2 () => { > // block body arrow function > } > > function doSomething3 (value) => value ? foo(value) : bar(); > > // without proposal > const doSomething2 = () => { > // block body arrow function > }; > doSomething3 = value => value ? foo(value) : bar(); > > doSomething1(); > doSomething2() > .then(doSomething3); > > function doSomething1 () { > // conventional function > } > ``` > As you can see, the latter code is just... messy and unpleasant. > > I don't think there's any potential issues in regards to interpreting > syntax (it just requires a simple check for an arrow after the parameters), > nor with readability. Async We would definitely need to clarify behaviour > with `async` and generator functions, though. > _______________________________________________ > 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

