Who uses functions instead of arrow functions and methods these days, anyway? (I know, people who haven't adopted ES2015+)
On Sun, 12 Nov 2017 at 09:53 Bob Myers <[email protected]> wrote: > Obviously we should use 𝓕 or something like that. I'm sure it's been > proposed, although I can't find it at the moment. Yes, I know all the > reasons why that's a bad idea. > > But come on. > Are you worried about typing more characters? Use an IDE with > auto-complete, or snippets. > Are you worried about payload size on the wire? Zipping makes it virtually > irrelevant. > > Bob > > On Sun, Nov 12, 2017 at 9:30 AM, Laurentiu Taschina < > [email protected]> wrote: > >> > The only benefit seems to be saving a few characters. The costs being >> an increase in complexity in the ways you can define a function, an >> increase in the complexity of parsing for functions, and the need to endure >> a candidate stage process for the removal of a few characters. To me, the >> costs far outweigh the benefit of just using the existing ways of declaring >> functions. >> >> I believe you're being unfair here. It's obviously not just 4 characters >> when it's such a common construct. If "let" was 3 words instead of 3 >> letters, like say "assign variable value" what do you think would happen? >> Would people think of it as "just 18 more characters". No, people would >> ignore it completely no matter it's usefulness or correctness and world >> continue to use "var" exclusively. >> >> The cost of not changing it is that people will slowly and surely >> gravitate to avoiding using "function" ever (if they can), and thus the >> construct that can be named falls out of favor. And history has shown it >> happens, particularly in javascript, given the popularity of $ and _ for a >> good number of libraries, and at the same time the unpopularity of >> perfectly usable but tooLongToTypeNamed native versions. Of course in large >> part it's ease of use and consistency and all that, but the first thing I >> ever hear they being sold on is how short/easy they are. Looking at other >> cases today you have the situation of things like Kotlin vs Java, or swift >> vs objective C. From Kotlin's site it literally gets described as "Concise, >> simple and very easy to read (and write)" in their first example. But even >> looking at just javascript's past, people clearly care enough to make their >> own divergent language just to get it have things be shorter—and if they >> can't do that, then the next best thing is to misuse the language. >> >> This wouldn't maybe be a particular big issue, but javascript is >> more-or-less "build complex functions with a bunch of small functions." >> Callbacks imply lots of functions, promises imply a lot of functions, >> functions are usually split into lots of smaller single-use-functions, >> functions often times return functions, etc. >> >> Anonymous functions are already kind of annoyance born of laziness but >> with arrow functions (and how they can not easily have a name in the >> context of a callback) they're becoming particularly routed into the >> language. I think at this point people looking at a stack trace seeing the >> callbacks named will look at it as something strange. Don't you think that >> it's strange that that's normal? >> >> With regard to the difficulties of this going though, I could have >> presented the some-greatest-feature-ever and you could have just >> copy/pasted that 2nd part of your sentence there to shoot it down. All I'll >> say is that it's just a synonym to an existing thing (even let is more >> complex), for users it's just an nicer version that helps with moving away >> from anonymous functions (you wouldnt really ever need to use "function" >> ever again, much like you dont need "var" now). And as far as implementing >> goes, if we were to create javascript form scratch would we actually use >> "function" as the keyword for creating functions and all the other >> overlyLongMethodNames? I don't think so, every other programming language >> doesn't seem to think so, with how concise most libraries are written the >> community doesn't seem to think so, and even the language javascript >> presumably copied those habits from probably no longer thinks so anymore. I >> think even with out other benefits just getting closer to the language that >> everyone thinks it should have been like is valuable enough to warrant the >> hassle. I assume that's the very reason we have let now too. >> >> >> On Sat, Nov 11, 2017 at 1:00 AM, Eli Perelman <[email protected]> >> wrote: >> >>> > I'm having trouble believing saving a couple of characters will have >>> the weight to make it happen >>> >>> I think this is the crux of the issue. What is the cost vs. benefit of >>> the proposal, and do these benefits outweigh the tradeoffs? >>> >>> The only benefit seems to be saving a few characters. The costs being an >>> increase in complexity in the ways you can define a function, an increase >>> in the complexity of parsing for functions, and the need to endure a >>> candidate stage process for the removal of a few characters. To me, the >>> costs far outweigh the benefit of just using the existing ways of declaring >>> functions. >>> >>> TLDR; to me this is -1. >>> >>> Eli Perelman >>> >>> On Fri, Nov 10, 2017 at 4:51 PM T.J. Crowder < >>> [email protected]> wrote: >>> >>>> On Fri, Nov 10, 2017 at 7:25 PM, Laurentiu Taschina < >>>> [email protected]> wrote... >>>> >>>> So the TL;DR of all that is: You think `func` (or whatever) can be an >>>> identifier or keyword based on context. >>>> >>>> Well, quite true, it's certainly been done before (`async` for >>>> instance). All I'll say is: Good luck with that, for this purpose. :-) >>>> >>>> I'll flag up an ASI gotcha you'll need to avoid: When defining `func` >>>> function definitions, you'll need "[no LineTerminator here]" after the >>>> closing `)` of the parameter list. Why? Because otherwise this is a >>>> function call followed by a standalone block thanks to ASI: >>>> >>>> ```js >>>> let a = func() >>>> { console.log("blah"); }; >>>> ``` >>>> >>>> (Which is why AsyncFunctionDefinition has "[no LineTerminator >>>> here]" after `async`.) But again: It's been done before, so... >>>> >>>> I'm having trouble believing saving a couple of characters will have >>>> the weight to make it happen, and personally wouldn't favor it, but frankly >>>> that doesn't mean anything. >>>> >>>> -- T.J. Crowder >>>> _______________________________________________ >>>> 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 >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

