Rolf B: Frage zum Wiki-Artikel „BigInt“

Beitrag lesen

problematische Seite

Hallo Janosch,

ja, kann man so schreiben, denke ich.

Ich habe mich nur ganz kurz in asm.js eingelesen. Mitgenommen habe ich, dass man dort ständig Konstrukte notiert, die die Operanden in den Number-Bereich zwingen, also sowas wie (+a) oder ((a+b)>>0). Die Der JIT kann daraus eine reine INT-Arithmetik ableiten und Code generieren, der vom Tempo her nativem Code nahekommt.

Wenn +a für BigInt ein BigInt und für Number ein Number liefert, ist das nicht alles. Was ist mit (+a) für a="789345897459837598375893748934578934893"? Zur Zeit ist das ein Number, 7.893E+39 (wenn ich jetzt richtig gezählt habe). Aber als BigInt wäre das doch viel schicker, oder? ODER? 💥

asm.js würde das nicht tun, dort verwendet man keine Strings (weil man den JavaScript-Heap nicht verwendet). Aber ein JIT müsste bei der Verarbeitung von (+a) mit diesem Szenario rechnen, und ich denke, das war der Grund, warum +a immer Number liefern soll. Und auch der Grund dafür, asm.js in die Tonne zu treten.

Zum unären - wollte ich was geschrieben haben, hab ich nicht? Codeminifizierer und Codegolfer verwenden das + gerne als toNumber-Operation. Das unäre - nicht, deswegen ist das scheinbar unkritisch. Oder die Existenz von unärem Minus ist so wichtig, dass man dafür den breaking change riskiert hat. Ach, ich weiß es doch auch nicht. Meine Kristallkugel ist bekanntlich aus Milchglas. Isnumalso 😟

Rolf

--
sumpsi - posui - obstruxi