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?


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.

| improve this answer | |
  • I see. Could it be done non asm.js code though? – Laurent Bourgault-Roy Jul 16 '13 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 Apr 8 '18 at 16:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.