1. Bezsensowna mikrooptymalizacja, która prawdopodobnie nic nie zmieni. W "zwykłym" interpreterze JSa każda wartość będzie mieć 8 bajtów, bo każda liczba to 64-bitowa liczba zmiennoprzecinkowa; z JITem, może się zorientuje co do typów i spakuje boole do 1 bajta (pakowanie do 1 bita jest rzadko używane bo ma swoje wady) a małe liczby do kilku bajtów, ale Twoje kombinowanie z używaniem `true` tam gdzie normalnie byś używał liczbę, prędzej by JITa skonfundowało i prędzej gorszy kod wygeneruje.
2. Bezsensowna mikrooptymalizacja, która prawdopodobnie nic nie zmieni. Ten sam powód co wyżej. Niespójne typy między elementami tablicy prędzej uniemożliwią optymalizacje; a jak wartości stringowe są znane, to lepiej polegać na wbudowanej deduplikacji stringów (interning).
3. Jakie są wasze dobre praktyki i rozwiązania w optymalizacji kodu?
Nie zgaduj z losowymi zmianami w losowych miejscach, tylko profiluj. Przeglądarki mają wbudowane potężne narzędzia do profilowania CPU i pamięci.