11548 sujets

JavaScript, DOM et API Web HTML5

Je me pose une question, peut-être inutile, mais considèrant les deux codes suivant, lequel vous semble le plus efficace en admettant que string est une longue chaîne comprennant de nombreuses occurences de < et >.
En gros, est-ce plus efficace de parser deux fois ou d'effectuer la fonction à chaque occurence.


string = string.replace(/\</gi,'&lt;');
string = string.replace(/\>/gi,'&gt;');


ou bien


string.replace(/\<|\>/gi, function(mot){
    return mot == '<' ? '&lt;' : '&gt;';
})
En terme de vitesse, je ne sais pas, il faut faire des tests, et ça doit sûrement être différent d'un navigateur à l'autre (j'avais lu je ne sais plus où que les regex étaient beaucoup plus rapides sur IE)

Par contre inutile d'utiliser une fonction de callback, il y a les références arrière.
Ce qui donne pour ta deuxième version, si j'ai bien compris ce que tu veux :

string = string.replace(/\\(<|>)/gi, '$1');
je veux changer les ouvertures et fermetures de balise par les entités correspondantes, ce que ne fat pas ton code (mais c'est vrai que l'échappement n'est sans doute pas nécessaire)