Pourquoi devrais-je utiliser string.length == 0 sur chaîne == « » lors de la vérification de chaîne vide dans ECMAScript?

StackOverflow https://stackoverflow.com/questions/1829611

Question

La plupart des développeurs sur mon projet en cours utilisent un (pour moi) étrange façon de vérifier les chaînes vides dans ECMAScript:

if (theString.length == 0)
    // string is empty

Je normalement écrire ceci:

if (theString == "")
    // string is empty

Cette dernière semble la version plus lisible et naturel pour moi.

Personne ne semblait que je demandais être en mesure d'expliquer les avantages de la version 1. Je suppose qu'à un moment donné dans le passé quelqu'un a dit tout le monde que c'est la façon de le faire, mais maintenant que personne à gauche et personne ne se souvient pourquoi il devrait faire de cette façon.

Je me demande s'il y a une raison pour laquelle je choisirais la première version sur le second? Est-il important, est d'une version meilleure que l'autre? Est-ce une version plus sûre ou plus pour une raison quelconque?

(Nous en fait cela dans Siebel eScript qui est conforme à la norme ECMAScript Edition 4)

Merci.

Était-ce utile?

La solution

je préfère cette technique dans plusieurs langues, car il est parfois difficile de faire la différence entre un "" littéral de chaîne vide et plusieurs autres chaînes (" ", '"').

Mais il y a une autre raison pour éviter theString == "" dans ECMAScript: 0 == "" évalue à true, tout comme false == "" et 0.0 == "" ...

... donc à moins que vous connaissez que theString est en fait une chaîne , vous pourriez finir par causer des problèmes pour vous-même en utilisant la comparaison faible. Heureusement, vous pouvez éviter cela avec une utilisation judicieuse de l'opérateur stricte égalité (de ===):

if ( theString === "" )
   // string is a string and is empty

Voir aussi:

Autres conseils

Le problème est que si theString est réglé sur 0 (zéro) votre 2ème exemple évaluera true.

La bonne réponse est correcte et il est important de comprendre la vérification du type. Mais dans la mesure où la performance, une chaîne va comparer perdre à .length méthode chaque fois, mais par une très très faible. Si vous n'êtes pas intéressé par le rasage millisecondes de votre vitesse du site, vous pouvez choisir ce qui est plus lisible / maintenable pour vous et, plus important encore, votre équipe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top