In JavaScript, every number you will ever use will always be represented with what C programmer would call a double
. The official type is I believe number
. If I recall correctly, that fact was mentioned by Google as a "fundamental" problem with JavaScript and one of the reason why they wanted to have clean break with Dart. Now, I can't help but wonder :
- Can the ECMAScript standard just add that type? Would it be possible to do without breaking existing code?
- Anyway, can't a JIT engine watch the integer usage and generate code that is almost as efficient as using a native integer type, by using integer registers and opcodes?
In effect : Could it be done? Why should it be done?
1 Answer 1
As for your second point, yes, integer use can be detected. Firefox does it as part of their asm.js feature. It's not entirely straightforward: for example, adding two integers may overflow. That wont happen if the values were added as double. To account for this, every expression that should produce a true 32 bit int is appended with | 0
, which does nothing except forcing the result to be an int.
-
I see. Could it be done non asm.js code though?Laurent Bourgault-Roy– Laurent Bourgault-Roy2013年07月16日 15:05:48 +00:00Commented Jul 16, 2013 at 15:05
-
Much like there are JS classes for complex numbers, you could write an int class that has
add(), subtract()
etc. and it does the| 0
trick. I suspect somebody has already done this??? Or are you more concerned about performance?user949300– user9493002018年04月08日 16:45:50 +00:00Commented Apr 8, 2018 at 16:45
Explore related questions
See similar questions with these tags.
9999999999999999 % 9
evaluate to? ;)