Maison  >  Article  >  interface Web  >  Javascript convertit les variables en partage de code de chaîne

Javascript convertit les variables en partage de code de chaîne

小云云
小云云original
2018-02-08 11:07:331349parcourir

Tout le monde devrait savoir qu'avec JavaScript, il existe 3 manières 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. Cet article vous présente principalement les trois méthodes de conversion de variables en chaînes en Javascript : value.toString(), "" + value et String(value). L'article le présente en détail à travers des exemples de codes, amis. qui en ont besoin, veuillez suivre l'éditeur pour apprendre ensemble, j'espère que cela pourra aider tout le monde.

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 première méthode ne fonctionnera pas. Et les méthodes 2 et 3 sont fondamentalement les mêmes.

""+value : Ajoutez une valeur à une chaîne vide pour la convertir en chaîne. Cette méthode est en fait une technique légèrement obscure qui peut rendre difficile la compréhension des intentions du développeur par les autres. 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, faciles à confondre, en particulier 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 l'opérateur new, 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

En fait, il n'est pas si courant d'utiliser String() comme constructeur, alors utilisez-le simplement pour convertir des chaînes.

""Des différences subtiles entre +value et String(value)

""+value et String(value) peuvent convertir une valeur en chaîne. 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() pour convertir la primitive en chaîne. La fonction ToString() est définie dans ECMAScript 5.1 (§9.8), mais ne peut pas être utilisée directement, elle est donc appelée fonction interne. 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 无需转换

Convertir l'objet en chaîne

Avant de convertir en chaîne, les deux méthodes convertiront d'abord l'objet en chaîne. primitif. La différence est que ""+value utilise la fonction interne ToPrimitive(Number) (sauf le type de date), tandis que String(value) utilise la fonction interne ToPrimitive(String).

  • ToPrimitive(Number) : Appelez d'abord obj.valueOf et retournez si le résultat est primitif, sinon, appelez à nouveau obj.toString() et retournez si le résultat est primitif ; .

  • ToPrimitive(String) : similaire à ToPrimitive(Number), sauf que obj.toString() est appelé en premier, puis obj.valueOf() est appelé.

Vous pouvez comprendre la différence à travers l'exemple suivant, obj est le suivant :

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

Appel des résultats :

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

Leurs résultats sont les mêmes

""+value est différent de String(value), mais nous le ressentons rarement. Parce que la plupart des objets utilisent la valeur par défaut valueOf(), qui renvoie l'objet lui-même :

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

Puisque la valeur de retour de valueOf() n'est pas primitive, ToPrimitive(Number) ignorera valueOf() et reviendra àString () valeur de retour. De cette façon, la valeur de retour de ToPrimitive(String) est la même.

Lorsque l'objet est une instance booléenne, numérique ou chaîne, valueOf() renverra une primitive. Cela signifie que le processus de calcul des deux est le suivant :

  • ToPrimitive(Number) : valueOf() renvoie la valeur primitive, puis utilise ToString() pour la convertir en chaîne. .

  • ToPrimitive(String) : toString() convertit la valeur primitive en chaîne via la fonction ToString().

On peut voir que bien que le processus de calcul soit différent, leurs résultats sont les mêmes.

Conclusion

Alors quelle méthode choisir ? Si vous pouvez vous assurer que la valeur n'est pas nulle ou indéfinie, utilisez value.toString(). Sinon, vous ne pouvez utiliser que ""+value et String(value), qui sont fondamentalement les mêmes.

Recommandations associées :

Méthode JavaScript toLocaleString() pour convertir un objet Date en chaîne en fonction de l'heure locale

Javascript Introduction à la méthode de conversion de variables en chaînes

php Explication détaillée de la conversion du décalage horaire en exemples d'invites de chaîne

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!

Déclaration:
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