Y a-t-il une raison pour laquelle je devrais utiliser string.charAt(x)
au lieu de la notation entre crochets string[x]
?
Réponses
Trop de publicités?// 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.
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é.
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('');