796 Stimmen

Wie wandelt man in JavaScript am besten eine Zahl in eine Zeichenkette um?

Was ist der "beste" Weg, um eine Zahl in eine Zeichenkette zu konvertieren (in Bezug auf die Geschwindigkeit Vorteil, Klarheit Vorteil, Speicher Vorteil, etc) ?

Einige Beispiele:

  1. String(n)

  2. n.toString()

  3. ""+n

  4. n+""

758voto

scunliffe Punkte 60080

Wie diese:

var foo = 45;
var bar = '' + foo;

Auch wenn ich das normalerweise aus Bequemlichkeit so mache, scheint es nach 1.000 Wiederholungen so zu sein bei der reinen Geschwindigkeit ist ein Vorteil für .toString()

Siehe Leistungstests hier (nicht von mir, aber gefunden, als ich meine eigenen schreiben wollte): http://jsben.ch/#/ghQYR

Am schnellsten auf der Grundlage des obigen JSPerf-Tests: str = num.toString();

Es ist zu beachten dass der Geschwindigkeitsunterschied nicht übermäßig groß ist, wenn man bedenkt, dass die Umwandlung auf jede beliebige Weise erfolgen kann 1 Million Mal in 0,1 Sekunden .

Aktualisierung: Die Geschwindigkeit scheint je nach Browser sehr unterschiedlich zu sein. In Chrome num + '' scheint nach diesem Test am schnellsten zu sein http://jsben.ch/#/ghQYR

Update 2: Wiederum basierend auf meinem obigen Test sollte beachtet werden, dass Firefox 20.0.1 die .toString() etwa 100 Mal langsamer als die '' + num Probe.

511voto

CarlosZ Punkte 7701

Meiner Meinung nach n.toString() erhält den Preis für seine Klarheit, und ich glaube nicht, dass er zusätzliche Kosten verursacht.

122voto

Bryan Kyle Punkte 12675

Explizite Konvertierungen sind für jemanden, der die Sprache nicht kennt, sehr klar. Die Verwendung von Typenzwang, wie von anderen vorgeschlagen, führt zu Mehrdeutigkeit, wenn ein Entwickler die Regeln für den Typenzwang nicht kennt. Letzten Endes ist die Zeit des Entwicklers teurer als die CPU-Zeit, daher würde ich für Ersteres auf Kosten von Letzterem optimieren. Das heißt, in diesem Fall ist der Unterschied wahrscheinlich vernachlässigbar, aber wenn nicht, bin ich sicher, es gibt einige anständige JavaScript-Kompressoren, die diese Art von Sache zu optimieren.

Aus den oben genannten Gründen würde ich also zustimmen: n.toString() o String(n) . String(n) ist wahrscheinlich die bessere Wahl, weil sie nicht versagt, wenn n null oder undefiniert ist.

61voto

Arun Joseph Punkte 2144

Im Folgenden sind die Methoden zur Konvertierung einer Integer à String in JS.

Die Methoden sind in absteigender Reihenfolge ihrer Leistungsfähigkeit angeordnet.

var num = 1

Methode 1:

num = `${num}`

Methode 2:

num = num + ''

Methode 3:

num = String(num)

Methode 4:

num = num.toString()

Anmerkung: Sie können nicht direkt anrufen toString() auf eine Nummer. 2.toString() wirft Uncaught SyntaxError: Invalid or unexpected token .

(Die Ergebnisse des Leistungstests werden wie folgt angegeben @DarckBlezzer in seiner Antwort)

51voto

johndodo Punkte 15249

In anderen Antworten wurden bereits andere Möglichkeiten genannt, aber ich bevorzuge diese:

s = `${n}`

Kurz, prägnant, bereits an vielen anderen Stellen verwendet (wenn Sie ein modernes Framework/eine moderne ES-Version verwenden), so dass es mit Sicherheit jeder Programmierer verstehen wird.

Nicht, dass dies (normalerweise) von großer Bedeutung wäre, aber es scheint auch so zu sein unter den schnellsten im Vergleich zu andere Methoden .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X