189 votes

Comment puis-je vérifier si une var est une chaîne en JavaScript?

Comment puis-je vérifier si var est une chaîne en JavaScript ?

J’ai essayé ceci et cela ne fonctionne pas...

412voto

Box9 Points 41987

Vous étiez proches :


Sur une note liée : la vérification ci-dessus ne fonctionnera pas si une chaîne est créée avec comme le type sera à la place. Il existe des solutions compliquées pour contourner ce problème, mais il est préférable de simplement éviter de créer des chaînes de cette façon, jamais.

80voto

alex Points 186293

L' typeof opérateur n'est pas un infixe (donc le membre de GAUCHE de votre exemple n'a pas de sens).

Vous avez besoin de l'utiliser comme si...

if (typeof a_string == 'string') {
    // This is a string.
}

Rappelez-vous, typeof est un opérateur, pas une fonction. En dépit de cela, vous verrez typeof(var) utilisé beaucoup dans la nature. Ce sens autant que var a = 4 + (1).

Aussi, vous pourriez aussi bien utiliser == (égalité opérateur de comparaison), puisque les deux opérandes sont des Strings (typeof toujours retourne un String), JavaScript est défini pour effectuer les mêmes étapes que j'ai utilisé === (opérateur de comparaison stricte).

Comme Box9 mentionne, cela ne les détecte pas un instancié String objet.

Vous pouvez détecter qu'avec....

var isString = str instanceof String;

jsFiddle.

...ou...

var isString = str.constructor == String;

jsFiddle.

Mais cela ne fonctionnera pas dans un multi - window environnement (pensez - iframes).

Vous pouvez obtenir autour de cette...

var isString = Object.prototype.toString.call(str) == '[object String]';

jsFiddle.

Mais encore une fois, (comme Box9 mentionne), vous êtes mieux de simplement en utilisant le littéral String format, par exemple, var str = 'I am a string';.

Poursuite De La Lecture.

15voto

Alf Eaton Points 1209

Combinant les réponses précédentes fournit ces solutions :

ou

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