5 ms·
JavaScript is a minefield of unexpected behavior when you try things like this. Besides the issue with this-binding already mentioned in the thread, there are o
by rbonvall 8y ago
JavaScript is a minefield of unexpected behavior when you try things like this. Besides the issue with this-binding already mentioned in the thread, there are other examples of weird stuff that happens when you don't introduce an apparently redundant lambda:
> ['10', '10', '10', '10', '10'].map(parseInt)
[ 10, NaN, 2, 3, 4 ]
> ['10', '10', '10', '10', '10'].map(x => parseInt(x))
[ 10, 10, 10, 10, 10 ]
- jcelerier 8y agoI'll take C++ UB every day over this
- rictic 8y agoHuh, I'm the opposite. I'd gladly take a confusing combination of consistent spec'd behavior over time travel, arbitrary code execution, and nasal demons.
- marcosdumay 8y agoWell, at least with a consistent spec you can create a compiler for a good language. Somehow, undefined behavior in C is a much smaller problem than it looks like. But the principle still applies.
- jcelerier 8y ago> I'd gladly take a confusing combination of consistent spec'd behavior over time travel, arbitrary code execution, and nasal demons. the point of UB is that you can tell your compiler to transform it into a specific behaviour -e.g., an assert with -fsanitize=undefined for instance.
- infogulch 8y agoOk this was a 'wat' moment for me until I realized that map passes up to 3 args to the function, including index, and parseint accepts a radix parameter. Still kinda weird/unintuitive, I could see myself not paying attention and reducing to the first example accidentally.
- kristjansson 8y ago> I’ve heard something about a surprise principle in API design. Principle of most surprise I think it was? Let’s go with that. The design process of this, I imagine.
- Serow225 8y agoI lol'd. Downvote away haters, sometimes you gotta laugh.
- deleted 8y ago[deleted]