Heim > Web-Frontend > js-Tutorial > So konvertieren Sie Javascript-Variablen in Zeichenfolgen

So konvertieren Sie Javascript-Variablen in Zeichenfolgen

青灯夜游
Freigeben: 2021-06-18 15:30:19
Original
6227 Leute haben es durchsucht

So konvertieren Sie js-Variablen in Zeichenfolgen: 1. Verwenden Sie die Anweisung „value.toString()“, um js-Werte (außer null und undefiniert) in Zeichenfolgen umzuwandeln. 2. Verwenden Sie „“ + value“. Anweisung; 3. Verwenden Sie die Anweisung „String(value)“.

So konvertieren Sie Javascript-Variablen in Zeichenfolgen

Die Betriebsumgebung dieses Tutorials: Windows 7-System, JavaScript-Version 1.8.5, Dell G3-Computer.

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

  • value.toString()
  • value.toString()
  • "" + value
  • String(value)

当value为null或者undefined时,第1种方法就不行了。而方法2和方法3基本上是一样的。

""+value: 将value与空字符串相加,即可将其转换为字符串。这种方法其实是一种稍微晦涩的技巧,可能会让别人难于理解开发者的意图。不过,这一点见仁见智,有些人偏爱这种方法。

String(value): 这种方法非常清晰:使用String()函数将value转换为字符串。不过,String()有两种不同用法,容易混淆,尤其对于Java开发者来说。当String()和运算符new一起作为构造函数使用时,它返回一个新创建的String对象;当不用new运算符调用String()时,它只把value转换成原始的字符串。这两者是非常不同的:

> 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
Nach dem Login kopieren

事实上,将String()作为构造函数使用并不常见,因此仅使用它来转换字符串就好了。

<span style="color: #ff0000"><strong>“”+value</strong></span>String(value)的细微差别

""+valueString(value)都可以将value转换为字符串,它们是如何做到的呢?事实上,它们虽然结果相同,但是方法稍有区别。

将primitive基本类型转换为字符串

两种方法都使用内部函数ToString()将primitive基本类型转换为字符串。ToString()函数在ECMAScript 5.1 (§9.8)中定义了,但是并不能直接使用,因此称作内部函数。下面的表格显示了ToString()"" + value

String(value)Wenn der Wert null oder undefiniert ist, funktioniert die erste Methode nicht. Und Methode 2 und Methode 3 sind grundsätzlich gleich. ""+value: Fügen Sie einem leeren String einen Wert hinzu, um ihn in einen String umzuwandeln. Bei dieser Methode handelt es sich eigentlich um eine etwas undurchsichtige Technik, die es für andere möglicherweise schwierig 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. Allerdings hat String() zwei unterschiedliche Verwendungszwecke, was insbesondere für Java-Entwickler leicht zu Verwechslungen führen kann. Wenn String() als Konstruktor mit dem Operator new verwendet wird, wird ein neu erstelltes String-Objekt zurückgegeben. Wenn String() ohne den Operator new aufgerufen wird, wird nur der Wert konvertieren zurückgegeben zur Originalzeichenfolge. Die beiden sind sehr unterschiedlich: Tatsächlich ist die Verwendung von String() als Konstruktor ungewöhnlich, also verwenden Sie ihn einfach zum Konvertieren von Zeichenfolgen. <span style="color: #ff0000"><tbody>""+Wert<tr></span>""+value und String(value) können beide einen Wert in einen String konvertieren. Wo ist es angekommen? Obwohl ihre Ergebnisse die gleichen sind, unterscheiden sich ihre Methoden geringfügig. Beide Methoden verwenden die interne Funktion ToString(), um den primitiven Basistyp Convert to zu konvertieren Zeichenfolge. Die Funktion ToString() ist in ECMAScript 5.1 (§9.8) definiert, kann aber nicht direkt verwendet werden und wird daher als interne Funktion bezeichnet. Die folgende Tabelle zeigt, wie die Funktion ToString() primitive primitive Typen in Zeichenfolgen konvertiert: resultundefiniertnull
var obj = {
 valueOf: function()
 {
  console.log("valueOf");
  return {};
 },
 toString: function()
 {
  console.log("toString");
  return {};
 }
};
Nach dem Login kopieren
Nach dem Login kopieren
mit String(value) Der subtile Unterschied
Primitiven Basistyp in String konvertieren
parameters
"undefiniert"
"null"🎜🎜🎜🎜Boolean🎜🎜"true" oder "false"🎜🎜🎜 🎜Number🎜🎜Konvertieren Sie eine Zahl in einen String, zum Beispiel: "1.765"🎜🎜🎜🎜String🎜🎜Keine Konvertierung erforderlich 🎜 🎜 🎜🎜

将Object转换为字符串

转换为字符串之前,两种方法都会先将Object转换为primitive。不同的是,""+value使用内部函数ToPrimitive(Number) (除了date类型),而String(value)使用内部函数ToPrimitive(String)

  • ToPrimitive(Number) : 先调用obj.valueOf ,若结果为primitive则返回;否则再调用obj.toString() ,若结果为primitive则返回;否则返回TypeError。
  • ToPrimitive(String) : 与ToPrimitive(Number)类似,只是先调用obj.toString() ,后调用obj.valueOf()

可以通过以下示例了解区别,obj如下:

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

调用结果:

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

它们的结果相同

""+valueString(value)虽然不同,但是我们很少能感觉到。因为,大多数object使用默认的valueOf() ,它返回对象本身:

> var x = {}
> x.valueOf() === x
true
Nach dem Login kopieren

由于valueOf()返回值并非primitive,因此ToPrimitive(Number)会跳过valueOf() ,而返回toString()的返回值。这样,与ToPrimitive(String)的返回值就一样了。

当object是Boolean、Number或者String实例时,valueOf()将返回primitive。这就意味着两者的计算过程是这样的:

  • ToPrimitive(Number) valueOf()返回primitive值,然后使用ToString()转换为字符串。
  • ToPrimitive(String) : toString()通过ToString()函数将primitive值转换为字符串。

可知,虽然计算过程不同,但是它们的结果是一样的。

结论

那么你该选择哪种方法呢?如果你可以确保value值不是null和undefined,那么不妨使用value.toString() 。否则,你只能使用""+valueString(value) ,它们基本上是一样的。

【相关推荐:javascript学习教程

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie Javascript-Variablen in Zeichenfolgen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage