Prises de MDN
Les littéraux de chaîne (notée par simple ou double quotes) et les chaînes de caractères retourné à partir de la Chaîne des appels à la non-constructeur contexte (c'est à dire, sans en utilisant le nouveau mot-clé) sont primitives des chaînes de caractères. JavaScript automatiquement convertit des primitives pour les objets de Chaîne, de sorte qu'il est possible d'utiliser Chaîne de méthodes de l'objet pour des primitifs cordes. Dans les contextes où un la méthode est invoquée sur une primitive de chaîne ou d'une recherche de propriété se produit, JavaScript, automatiquement automatiquement la chaîne de caractères primitifs et l'appel à la méthode ou à exécuter la recherche de propriété.
Alors, j'ai pensé (logiquement) les opérations (les appels de méthode) sur les littéraux de chaîne doit être plus lent que les opérations sur les Objets string parce que toute chaîne de caractères littérale est converti en chaîne de caractères de l'Objet (travail supplémentaire) avant l' method
appliqué sur la chaîne.
Mais dans ce cas de test, le résultat est à l'opposé. Le bloc de code-1 court plus vite que le bloc de code-2, les deux blocs de code sont donnés ci-dessous:
bloc de code-1 :
var s = '0123456789';
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
bloc de code-2 :
var s = new String('0123456789');
for (var i = 0; i < s.length; i++) {
s.charAt(i);
}
Les résultats varient selon les navigateurs, mais le bloc de code-1 est toujours plus rapide. Quelqu'un peut-il m'expliquer pourquoi, pourquoi le bloc de code-1 est plus rapide que le bloc de code-2.