2015-08-03 4 views
12

Ich wundere mich, warum ECMA-Skript keine Integer out-of-the-box unterstützt. Natürlich weiß ich, dass es einige Ganzzahlen gibt (in der Antwort auf diese Frage gibt es eine gute Zusammenfassung: Difference between floats and ints in Javascript?). Aber das sind immer noch keine "echten" ganzen Zahlen. Und die Probleme mit Floats als Ints sind reichlich vorhanden. Warum unterstützt es keine Ganzzahlen und warum wurde dies nicht mit ECMA-Skript 6 behoben?Warum bietet das ECMA-Skript keinen Integer-Typ?

+0

Da es keine expliziten Typdeklarationen für eine Reihe (und somit keine Möglichkeit, einen Unterschied zwischen einem int auszudrücken und ein Float), das Leben ist viel weniger kompliziert, wenn es nicht mehrere Arten von Zahlen gibt, die aus einer gegebenen Operation resultieren könnten. – jfriend00

+2

TypedArrays sind ziemlich real. Wonach suchen Sie? – Amit

+0

Ich habe versucht zu verstehen, warum es so ist und ob es irgendeine Hoffnung gibt, die irgendwann behoben wird. In Bezug auf die Einfachheit: IMHO ist dies eine Ex-post-Begründung. Ich verstehe vollkommen, dass man nicht viel besser machen kann, wenn man in 10 Tagen eine Sprache ausbasteln muss. –

Antwort

13

Die Sprache wurde in 10 Tagen entworfen und implementiert, also war es ursprünglich eine Frage der Zeit. Von der horses mouth:

Ja, es war von Anfang an da. Aber Bignums waren nicht in den Karten. JS musste "nur wie Java aussehen", nur weniger, sei Javas dummer kleiner Bruder oder Junge-Geisel-Kumpel. Außerdem musste ich in zehn Tagen fertig sein oder etwas Schlimmeres als JS wäre passiert.

Also standardmäßig doppelt int unter der Haube, und bitweise Ops sind 32-Bit-Int (Uint, wenn Sie >>> verwenden). Ich beschuldige Java.

Ich würde nicht wissen, warum es nicht auf dem Tisch für ES2015 war. Für mich scheint es so, als ob man die Arbeit entfernen würde, aber ich würde raten. Brendan Eich ist ziemlich aktiv auf Twitter, du könntest ihn wahrscheinlich einfach fragen. :)

+2

Ich denke, die politischen Machtkämpfe, die ES4 töteten - insbesondere IBMs kindlicher, aber erfolgreicher Versuch, den gesamten Prozess zu bombardieren, wenn "IEEE 754r DEC128" nicht eingeschlossen wurde - brachte TC39 davon ab, sich mit einem der Zahlentypen in Harmony herumzuärgern. Nur eine Theorie. https://www.youtube.com/watch?v=V1_Y-KVhZ9Q&t=14m – max

+0

@KitSunde: Ich werde meinen Kommentar entfernen, da die andere Antwort vermittelt, woran ich gerade denke. – nhahtdh

+4

Es * war * auf dem Tisch für ES2015. Sie haben recht, es ist eine Menge Arbeit, um dies a) richtig und b) rückwärtskompatibel zu machen, und daher wurden Vorschläge, die (benutzerdefinierte) neue Typen einführten, auf ES2016 verschoben. – Bergi

4

Kann nicht wirklich für Harmonie sprechen, Douglas Crockford, sagte, dass sie daran interessiert waren, einen weiteren Zahlentyp in zukünftigen Ausgaben von ES hinzuzufügen. Er sagte jedoch auch, dass das Hinzufügen eines neuen Nummerntyps der Sprache Gewalt antat, dass die Einfachheit der Sprache wünschenswert sei.

https://www.youtube.com/watch?v=V1_Y-KVhZ9Q

Er beginnt im Grunde redet über „Anzahl“ von 13.52 bis 26:00

Verwandte Themen