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 :
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!