654 votes

Ce qui ' s la meilleure façon de convertir un nombre en une chaîne ?

Ce qui est le « meilleur » moyen de convertir un nombre en une chaîne ? (vous pouvez citer avantage de vitesse, avantage de la clarté, avantage de la mémoire, etc..)

Désolé, si cette question semble académique, mais je veux choisir un style (et s’y tenir pour toujours) donc je veux choisir à bon escient.

J’ai pensé à :

  1. ``
  2. ``
  3. ``
  4. ``
  5. ?

662voto

scunliffe Points 30964

comme ceci:

var foo = 45;
var bar = '' + foo;

En fait, même si en général, je fais comme ça pour la simple commodité, plus de 1 000 s d'itérations, il apparaît pour la vitesse brute il y a un avantage pour l' .toString()

Voir les tests de Performance ici (pas par moi, mais trouve quand je suis allé à écrire mes propres): http://jsperf.com/number-to-string/2

Plus rapide basé sur la JSPerf test ci-dessus: str = num.toString();

Il convient de noter que la différence de vitesse n'est pas trop importante quand vous considérez qu'il peut faire la conversion de toute façon 1 Million de fois en 0.1 secondes.

Mise à jour: La vitesse semble différer considérablement par navigateur. Dans google Chrome, num + '' semble être le plus rapide sur cette base JSPerf test (différent de test ci-dessus) http://jsperf.com/scunliffe-number-to-string

Mise à jour 2: sur la base de mon test ci-dessus, il convient de noter que Firefox 20.0.1 exécute l' .toString() 100 fois plus lent que l' '' + num de l'échantillon.

441voto

CarlosZ Points 2455

À mon avis `` prend le prix pour sa clarté et je ne pense pas qu’il porte une charge supplémentaire.

95voto

Bryan Kyle Points 5931

Les conversions explicites sont très clair pour quelqu'un qui est nouveau à la langue. À l'aide de contrainte de type, comme d'autres l'ont suggéré, conduit à l'ambiguïté si un développeur n'est pas au courant des règles de contrainte. En fin de compte le temps dans le révélateur est plus coûteux que le temps CPU, j'aimerais optimiser pour l'ancien, à la charge de ce dernier. Cela étant dit, dans ce cas, la différence est probablement négligeable, mais si non, je suis sûr qu'il ya des décent JavaScript compresseurs qui permettra d'optimiser ce genre de chose.

Donc, pour les raisons ci-dessus, j'irais avec: n.toString() ou String(n). String(n) est probablement un meilleur choix car il ne sera pas échouer si n a la valeur null ou undefined.

12voto

99tm Points 19742

Pour convertir n’importe quelle variable en chaîne, le plus simple consiste à ajouter une chaîne vide à cette variable.

2voto

Aleadam Points 25433

J’aime les deux premiers car ils sont plus faciles à lire. J’ai tendance à utiliser `` , mais c’est juste une question de style qu’autre chose.

C’est à moins d’avoir une ligne comme

qui est très explicite

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X