Heim  >  Artikel  >  Web-Frontend  >  Javascript wandelt Variablen in String-Code-Sharing um

Javascript wandelt Variablen in String-Code-Sharing um

小云云
小云云Original
2018-02-08 11:07:331357Durchsuche

Jeder sollte wissen, dass es mit JavaScript drei verschiedene Möglichkeiten gibt, Variablen in Strings umzuwandeln. In diesem Artikel werden diese Methoden im Detail vorgestellt und ihre Vor- und Nachteile verglichen. In diesem Artikel werden Ihnen hauptsächlich die drei Methoden zum Konvertieren von Variablen in Zeichenfolgen in Javascript vorgestellt: value.toString (), „“ + value“ und „String(value)“. Wer es braucht, folgt bitte dem Herausgeber, um gemeinsam zu lernen. Ich hoffe, es kann allen helfen.

Die 3 Methoden zum Konvertieren von Variablen in Zeichenfolgen sind wie folgt:

  • value.toString()

  • "" + Wert

  • String(value)

Wenn der Wert null oder undefiniert ist, funktioniert die erste Methode nicht. Und Methode 2 und Methode 3 sind grundsätzlich gleich.

""+Wert: Wert zu einer leeren Zeichenfolge hinzufügen, um sie in eine Zeichenfolge umzuwandeln. Bei dieser Methode handelt es sich tatsächlich um eine etwas undurchsichtige Technik, die es anderen möglicherweise schwer macht, die Absichten des Entwicklers zu verstehen. Dies ist jedoch Ansichtssache und einige Leute bevorzugen diese Methode.

String(value): Diese Methode ist sehr klar: Verwenden Sie die Funktion String(), um den Wert in einen String umzuwandeln. String() hat jedoch zwei unterschiedliche Verwendungszwecke, was insbesondere für Java-Entwickler leicht zu Verwirrung führen kann. Wenn String() als Konstruktor mit dem Operator new verwendet wird, gibt er ein neu erstelltes String-Objekt zurück; wenn String() ohne new-Operator aufgerufen wird, konvertiert es nur den Wert in den ursprünglichen String. Die beiden sind sehr unterschiedlich:

> String("Fundebug") === new String("Fundebug")
false
> typeof String("Fundebug")
'string'
> String("Fundebug") instanceof String
false
> typeof new String("Fundebug")
'object'
> new String("Fundebug") instanceof String
true

Tatsächlich ist es nicht so üblich, String() als Konstruktor zu verwenden, also verwenden Sie es einfach zum Konvertieren von Zeichenfolgen.

""Subtile Unterschiede zwischen +value und String(value)

""+value und String(value) können einen Wert in einen String umwandeln. Wie machen sie das? Obwohl ihre Ergebnisse die gleichen sind, unterscheiden sich ihre Methoden geringfügig.

Primitiv in String konvertieren

Beide Methoden verwenden die interne Funktion ToString(), um Primitiv in String umzuwandeln. Die ToString()-Funktion ist in ECMAScript 5.1 (§9.8) definiert, kann jedoch nicht direkt verwendet werden und wird daher als interne Funktion bezeichnet. Die folgende Tabelle zeigt, wie die ToString()-Funktion primitive primitive Typen in Strings konvertiert:

参数 结果
undefined "undefined"
null "null"
Boolean "true"或者 "false"
Number 将数字转换为字符串,例如: "1.765"
String 无需转换

Objekt in String konvertieren

Vor der Konvertierung in einen String konvertieren beide Methoden zunächst das Objekt in Primitive. Der Unterschied besteht darin, dass „“+value“ die interne Funktion „ToPrimitive(Number)“ verwendet (außer Datumstyp), während „String(value)“ die interne Funktion „ToPrimitive(String)“ verwendet.

  • ToPrimitive(Number): Rufen Sie zuerst obj.valueOf auf und geben Sie zurück, wenn das Ergebnis primitiv ist. Andernfalls rufen Sie obj.toString() erneut auf und geben Sie zurück, wenn das Ergebnis primitiv ist .

  • ToPrimitive(String): Ähnlich wie ToPrimitive(Number), außer dass zuerst obj.toString() und dann obj.valueOf() aufgerufen wird.

Sie können den Unterschied anhand des folgenden Beispiels verstehen. obj lautet wie folgt:

var obj = {
 valueOf: function()
 {
  console.log("valueOf");
  return {};
 },
 toString: function()
 {
  console.log("toString");
  return {};
 }
};

Ergebnisse aufrufen:

> "" + obj
valueOf
toString
TypeError: Cannot convert object to primitive value
> String(obj)
toString
valueOf
TypeError: Cannot convert object to primitive value

Ihre Ergebnisse sind gleich

""+value unterscheidet sich von String(value), aber wir spüren es selten. Da die meisten Objekte den Standardwert valueOf() verwenden, der das Objekt selbst zurückgibt:

> var x = {}
> x.valueOf() === x
true

Da der Rückgabewert von valueOf() nicht primitiv ist, überspringt ToPrimitive(Number) valueOf() und kehrt zu toString zurück () Rückgabewert. Auf diese Weise ist der Rückgabewert von ToPrimitive(String) derselbe.

Wenn das Objekt eine Boolesche, Zahlen- oder String-Instanz ist, gibt valueOf() ein Grundelement zurück. Dies bedeutet, dass der Berechnungsprozess der beiden wie folgt ist:

  • ToPrimitive(Number): valueOf() gibt den primitiven Wert zurück und konvertiert ihn dann mit ToString() in eine Zeichenfolge .

  • ToPrimitive(String): toString() wandelt den Grundwert über die Funktion ToString() in einen String um.

Es ist ersichtlich, dass der Berechnungsprozess zwar unterschiedlich ist, die Ergebnisse jedoch gleich sind.

Fazit

Welche Methode sollten Sie also wählen? Wenn Sie sicherstellen können, dass der Wert nicht null oder undefiniert ist, verwenden Sie value.toString(). Ansonsten können Sie nur „+value“ und „String(value)“ verwenden, die grundsätzlich gleich sind.

Verwandte Empfehlungen:

JavaScript-Methode zum Konvertieren eines Date-Objekts in einen String entsprechend der Ortszeit toLocaleString()

Javascript-Einführung in die Methode zum Konvertieren von Variablen in Zeichenfolgen

php Detaillierte Erläuterung der Beispiele für die Konvertierung von Zeitunterschieden in Zeichenfolgen-Eingabeaufforderungen

Das obige ist der detaillierte Inhalt vonJavascript wandelt Variablen in String-Code-Sharing um. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn