4 ms·
The only reason something like this makes it to the front page, is because of the popularity of things like node.js right now. This is a bug, not a feature.
by JoeCortopassi 14y ago
The only reason something like this makes it to the front page, is because of the popularity of things like node.js right now. This is a bug, not a feature.
- JonoW 14y agoThe crazy part is that it's not a bug; it's behaving exactly as it's specified to.
- deleted 14y ago[deleted]
- chris_wot 14y agoNo, no it's not. It's actually part of ECMA-262. Javascript allows numbers to be a number, NaN or positive/negative infinity. It is well specified within the spec that "Division of a nonzero finite value by a zero results in a signed infinity. The sign is determined by the rule already stated above." [1] Before you get your knickers in a twist, this is compliant with IEEE 754; although the IEEE define it as an exception. 1. ECMA-262, pg 74, "11.5.2 Applying the / Operator"
- JoeCortopassi 14y agoI understand that this is part of the spec. But that is a bug to allow division by zero to return a string, and then allow a string to have it's first letter indexed by a math function as a representation of a non base 10 number, is a bug! Just because it is part of the spec doesn't make it a sane addition to the language.
- chris_wot 14y agoDivision by zero doesn't return a string. It returns a well defined value that is within the domain of the data type, which is positive infinity. parseInt does what it is specified to do - it takes the numerical value (positive infinity) and converts it to a string, then searches the string for the first character that it recognises as a contiguous number ("I", which is 18 in base 19). If it finds one, then it returns the value as an integer, if not then it returns NaN. So not a bug, though I agree the string search is particularly silly. It can't be a bug if it does what the specified algorithm says it does. It would be a bug if it gave a different result.