Problem: mamy po stronie klienta, fragment strony w HTML'u, który chcemy wysłać na serwer w postaci niezmienionej.

W celu zakodowania znaczników HTML, postanowiłem w pętli przejść po wszystkich znaczkach i zakodować je uzyskując w ten sposób zmienną typu string jak pokazuje to poniższa funkcja:

function encode_string(html) {
    var zwrot = '';

    for (var i = 0; i < html.length; i++) {
        zwrot = zwrot + html.charCodeAt(i) + '&';
    }
    zwrot = zwrot.substring(0, zwrot.length - 1);

    return zwrot;
}

Sposób powyższy działa prawidłowo we wszystkich przeglądarkach, z jednym tylko mankamentem: w przeglądarce IE7 (w tej i dokładnie tylko w tej) czas wykonania pętli w funkcji, dla ciągu wejściowego w rozmiarze ok. 4000 znaków, wynosi ok. 6 sekund! W moim przypadku była to sytuacja nie do przyjęcia.

Rozwiązaniem tego problemu było zastosowanie zmiennej tablicowej. Rezygnujemy z konkatenacji stringów na rzecz tablicy, którą w pętli wypełniamy kolejnymi kodami. Po zakończeniu, tworzymy jednego stringa, na podstawie tablicy, używając w tym celu funkcji "join" przyjmującej jako parametr znak sklejający poszczególne elementy tablicy. Zoptymalizowana funkcja kodująca znajduje się poniżej, a czas jej wykonania skrócił się do ułamka sekundy:

function encode_string(html) {

    var zwrot = '';

    var max = html.length;
    var array = new Array(max);

    for (var i = 0; i < max; i++) {
        array[i] = html.substr(i, 1).charCodeAt(0);
    }
    zwrot = array.join('&');

    return zwrot;
}