Maison > interface Web > js tutoriel > Trois façons de convertir des variables en chaînes en Javascript

Trois façons de convertir des variables en chaînes en Javascript

黄舟
Libérer: 2017-09-22 09:53:49
original
2594 Les gens l'ont consulté

Cet article vous présente principalement trois méthodes de conversion de variables en chaînes en Javascript. Ces trois méthodes sont : value.toString(), "" + value et String(value). L'exemple de code est introduit en très peu. détail. Les amis qui en ont besoin peuvent suivre l'éditeur pour apprendre ensemble.

Préface

Tout le monde devrait savoir que pour JavaScript, il existe 3 façons différentes de convertir des variables en chaînes. Cet article présentera ces méthodes en détail et comparera leurs avantages et inconvénients. Pas grand chose à dire ci-dessous, jetons un œil à l’introduction détaillée.

3 méthodes

Les 3 méthodes pour convertir des variables en chaînes sont les suivantes :

  • value.toString()

  • "" + value

  • String(value)

Lorsque la valeur est nulle ou indéfinie, la 1ère méthode ne fonctionnera pas. Et les méthodes 2 et 3 sont fondamentalement les mêmes.

""+value: Convertissez la valeur en chaîne en l'ajoutant à la chaîne vide. Cette méthode est en fait une technique légèrement obscure qui peut rendre difficile la compréhension des intentions du développeur. Cependant, c’est une question d’opinion et certaines personnes préfèrent cette méthode.

String(value) : Cette méthode est très claire : utilisez la fonction String() pour convertir la valeur en chaîne. Cependant, String() a deux utilisations différentes, ce qui est facile à confondre, notamment pour les développeurs Java. Lorsque String() est utilisé comme constructeur avec l'opérateur new, il renvoie un objet String nouvellement créé ; lorsque String() est appelé sans nouvel opérateur, il convertit uniquement la valeur dans la chaîne d'origine. Les deux sont très différents :


> 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
Copier après la connexion

En fait, utiliser String() comme constructeur n'est pas si courant, donc simplement l'utiliser pour convertir une chaîne est correct.

""+Différences subtiles entre la valeur et la chaîne (valeur)

""+value et String(value) peuvent tous deux convertir la valeur en chaînes de caractères , comment font-ils ? En fait, même si leurs résultats sont les mêmes, leurs méthodes sont légèrement différentes.

Convertir la primitive en chaîne

Les deux méthodes utilisent la fonction interne ToString()Convertir la primitive en chaîne . ToString() Les fonctions sont définies dans ECMAScript 5.1 (§9.8), mais ne peuvent pas être utilisées directement, elles sont donc appelées fonctions internes. Le tableau suivant montre comment la fonction ToString() convertit les types primitifs en chaînes :

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

将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 {};
 }
};
Copier après la connexion

调用结果:


> "" + obj
valueOf
toString
TypeError: Cannot convert object to primitive value
> String(obj)
toString
valueOf
TypeError: Cannot convert object to primitive value
Copier après la connexion

它们的结果相同

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


> var x = {}
> x.valueOf() === x
true
Copier après la connexion

由于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) ,它们基本上是一样的。

总结

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal