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?
3
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.
2