5 ms·
> It allows people to write JavaScript following whatever approach suits them This comment really looks like it's a reply to some article other than this one.
by brlewis 6y ago
> It allows people to write JavaScript following whatever approach suits them
This comment really looks like it's a reply to some article other than this one.
Realistically, do you think JS programmers are going to form two camps?
x ** y
Math.pow(x, y)
I don't think so. I think people will just stop using Math.pow.
Nor do I foresee a big problem with some numeric constants being written with separators and others not.
In the unlikely event there's a problem with either addition, prettier can be enhanced to make it so developers don't need to be up to speed on them.
- adamkl 6y agoThat's fair. My comment is probably off-base when it comes to the particular contents of this article. I guess I was speaking more to a general fatigue with every new feature that is added to JavaScript/TypeScript. What was so wrong with Math.pow(x, y) that we needed a new operator for it? I think this is a question that could be asked of many additions to JavaScript/TypeScript over the years, and I think every (well-intentioned) addition has contributed to the language's current kitchen sink. New additions don't mean the old capabilities will go away (without breaking backwards compatibility). So yes, some developers will use the new power operator in net-new code, but all existing usages of Math.pow() will remain, and every new developer that learns JavaScript will now need to know both.
- brlewis 6y agoIdeally, JS would have been based on S expressions and consistency would naturally flow from the syntax. But that ship has sailed, and occasionally it makes sense to add a new infix operator for succinctness. https://github.com/tc39/proposal-exponentiation-operator#informative https://github.com/tc39/proposal-exponentiation-operator#inf... With prettier, one can make an old style go away.
- Silhouette 6y agoNew additions don't mean the old capabilities will go away (without breaking backwards compatibility). This is something any popular programming language has to wrestle with. There is a lot of merit in Python's philosophy of having one, and preferably only one, obvious way to do something. Otherwise, even if each different way is perfectly good in its own right, you still have more for anyone learning the language to know, and you get different representations of the same idea appearing in the same code base for no particular reason. I do think JavaScript has more of a problem with this than most languages because of its rapid changes and ambiguous standardisation (the de jure of annual ES standards vs. the realities of what is supported in real time in each browser, or Node version, or Babel preset). Does anyone really have time to check whether some new function on Array's prototype or some new syntax like the examples in this article is available in every target they need to support yet? I'm guessing most of us still use Babel in our build process for front-end code, even if the relatively new parts of JS we're using are supported natively everywhere we need them by now. But then you get things like modules and imports, and you still find Node's story with these is a muddle. Things we've taken for granted for years now on the front end don't always work out of the box as you might expect on the back end, and there are at least two competing styles. And this is arguably the most important and fundamental tool a programming language needs for building larger applications!
- brlewis 6y agoWhy would one check if the new syntax is available rather than just use browserslist? https://github.com/browserslist/browserslist-example#babel https://github.com/browserslist/browserslist-example#babel
- Silhouette 6y agoFor one thing, Node exists. If you are writing server-side or automation code, you probably aren't using tools like Babel and Browserslist.
- filoeleven 6y agoSome of us still have to support IE11, so I’m forced into the Math.pow() camp without adding a transpiler. Is the power operation really used enough for this shortcut to be a meaningful addition? I’ve literally never used it in workplace code. Prettier.js is fantastic. I don’t think it does any function remapping right now though, does it? Seems like a better fit for Babel.js, since its whole reason to exist is backwards-compatibility.