326 votes

string.charAt (x) ou chaîne [x]?

Y a-t-il une raison pour laquelle je devrais utiliser string.charAt(x) au lieu de la notation entre crochets string[x] ?

291voto

George W Bush Points 13450
// Bracket Notation
"Test String1"[6]

// Real Implementation
"Test String1".charAt(6)

C'est une mauvaise idée d'utiliser des crochets, pour ces raisons (Source):

Cette notation ne fonctionne pas dans IE7. Le premier extrait de code de retour pas défini dans IE7. Si vous arrive d'utiliser le support de la notation pour les chaînes de tous les au-dessus de votre code et que vous souhaitez migrer .charAt(pos), c'est une vraie douleur: Les crochets sont utilisés partout dans votre code et il n'y a pas de moyen facile de détecter si c'est une chaîne ou un tableau/objet.

Vous ne pouvez pas définir le caractère à l'aide de cette notation. Comme il n'y a pas d'avertissement de en tout genre, c'est vraiment déroutant et frustrant. Si vous étiez à l'aide de la .charAt(pos) de la fonction, vous ne serait pas ont été tentés de le faire.

En gros, c'est un raccourci de notation, qui n'est pas complètement mis en œuvre sur tous les navigateurs.

Remarque, vous n'êtes pas en mesure d'écrire des caractères en utilisant soit la méthode. Toutefois, cette fonctionnalité est un peu plus facile à comprendre avec la .charAt() fonction qui, dans la plupart des langues, est en lecture seule fonction.

133voto

Matt Ball Points 165937

De MDC:

Il y a deux façons d'accéder à un caractère particulier dans une chaîne de caractères. La première est l' charAt méthode:

return 'cat'.charAt(1); // returns "a"

L'autre façon est de traiter la chaîne comme un tableau, où chaque indice correspond à un caractère individuel:

return 'cat'[1]; // returns "a"

La seconde manière (le traitement de la chaîne comme un tableau) ne fait pas partie de ECMAScript 3; c'est un JavaScript et ECMAScript 5 fonction (et non pris en charge dans tous les navigateurs).

Dans les deux cas, la tentative de définir un caractère individuel ne fonctionne pas. En essayant de mettre un personnage à travers charAt entraîne une erreur, tout en essayant de définir un personnage via l'indexation ne jette pas une erreur, mais la chaîne elle-même est inchangée.

Donc, comme vous pouvez l'avoir compris maintenant, charAt() est mieux d'un point de vue de la compatibilité.

11voto

CharithJ Points 15364

String.charAt () est la norme et fonctionne dans tous les navigateurs. Dans les navigateurs autres que IE, vous pouvez utiliser la notation entre crochets pour accéder aux caractères, mais IE ne le prend pas en charge. (Vous ne savez pas si cela a été implémenté avec les dernières versions).

Si quelqu'un veut vraiment utiliser la notification par tranche. Il est judicieux de convertir la chaîne en tableau de caractères afin de la rendre compatible avec tous les navigateurs.

 var testString = "Hello"; 
var charArr = myString.split(''); 
 

7voto

Arman McHitaryan Points 847

Résultat très intéressant lorsque vous testez l’accesseur d’index de chaînes contre la méthode charAt() . Semble que Chrome est le seul navigateur qui aime charAt plus.

CharAt vs index 1

ChartAt vs index 2

ChartAt vs index 3

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