not focussing on aesthetics, but on reduce of bureaucracy, which not by coincidence it's something fat-arrow functions already provide.
On Thu, Oct 25, 2018 at 4:40 PM Ben Wiley <[email protected]> wrote: > Purely from the standpoint of convincing people not to use fat arrows only > because they look more cute or whatever, this would be a great addition to > the language. The decision would then become which arrow is best for the > use case, no longer some trivial aesthetic argument. > > Le jeu. 25 oct. 2018 10 h 09, manuelbarzi <[email protected]> a > écrit : > >> ok. >> >> as little example, what if - for any case - you would explicitly require >> a function not to be auto-binded anymore, then in the current situation you >> would need to switch code from fat-arrow `() => ...` to bureaucratic >> `function() { ... }`. with thin-arrow you would just need to change symbol >> `=` by `-`, ending in just `() -> ...`. i guess this simplicity may sound >> trivial, but it would be aligned with and ease while coding, making es+ >> still thinking beyond, upon this situations and similar others (apart from >> the visible shortness and simplicity when writing `() -> ...` instead of >> `function() { ... }`). >> >> let's bring a little example on expressing an operation to be applied on >> an object by itself: >> >> ``` >> const o = { >> do(expression) { >> expression.call(this) >> } >> } >> >> // cant apply or call on fat-arrow (as already binded to outer context) >> //o.do(() => this.name = 'object') // won't work >> >> // would then need to switch it to wordy `function` expression >> o.do(function() { this.name = 'object' }) >> >> // but following PROPOSAL1, would just be (shorter and simpler): >> // o.do(() -> this.name = 'object') >> >> console.log(o.name) >> ``` >> needless to say, less characters, more compressed code. >> >> On Thu, Oct 25, 2018 at 1:10 PM Isiah Meadows <[email protected]> >> wrote: >> >>> Couple nita about your argunents: >>> >>> 1. Most commonly used implementations don't close over more than what >>> they have to. If `this` isn't used, it's not closed over. The addition of >>> one more variable to check has so little overhead you won't gain anything. >>> >>> 2. Deprecating anything in JS is hard in general. The little-used >>> `arguments.caller` itself was a challenge. >>> >>> Not TC39, but I strongly doubt this would have any traction for these + >>> your additional justifications against. >>> >>> On Thu, Oct 25, 2018 at 06:59 manuelbarzi <[email protected]> wrote: >>> >>>> taking this old discussion back a bit ( >>>> https://esdiscuss.org/topic/arrow-function-syntax-simplified), why >>>> shouldn't be a good idea to deprecate the use of "function" in pro of >>>> thin-arrow "->", being applicable in same cases (including named function)? >>>> >>>> just a bit of code with more about proposals: >>>> >>>> const GLOBAL_FACTOR = 2 >>>> >>>> const result = [1, 2, 3].map(function(value) { return GLOBAL_FACTOR * >>>> value }) >>>> >>>> // PROPOSAL 1 - normal anonymous function (same as fat-arrow, but >>>> dynamic binding, nothing much new here as from previous proposals): >>>> // const result = [1, 2, 3].map(value -> GLOBAL_FACTOR * value) >>>> >>>> >>>> function applyFactor(value) { >>>> return GLOBAL_FACTOR * value >>>> } >>>> >>>> // PROPOSAL 2 - named function declaration (without 'function' keyword): >>>> // applyFactor(value) -> GLOBAL_FACTOR * value >>>> >>>> // referenced function (following PROPOSAL 1): >>>> // const applyFactor = value -> GLOBAL_FACTOR * value >>>> >>>> const sameResult = [1, 2, 3].map(applyFactor) >>>> >>>> justification i read against this proposal is mainly that thin-arrow >>>> may bring "more confusion" and may "provide poor or no benefit" co-existing >>>> with fat-arrow. but having both may bring devs the chance to understand the >>>> differences in the learning process as any other feature. the only "big >>>> deal" would be to be aware of fix vs dynamic binding, which is something a >>>> dev must understand sooner or later, independently of syntax (it can be >>>> just explained with traditional function() {} and .bind() method). >>>> >>>> on the other hand it would bring the chance to avoid over-using >>>> fat-arrow when binding it's not really necessary (which may "save" internal >>>> binding processing too). >>>> >>>> finally, a simpler and shorter syntax avoiding the requirement of the >>>> keyword 'function'. >>>> >>>> >>>> _______________________________________________ >>>> 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 >> >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

