Łączenie stringów Drukuj
Ocena użytkowników: / 0
SłabyŚwietny 
Wpisany przez Patryk yarpo Jar   
wtorek, 22 września 2009 17:39

W JS operatorem łączącym dwa stringi [ciągi znaków] jest '+'. W prostych wygląda to tak:

 <script type="text/javascript">
    var string_1 = "To jest";
    var string_2 = "tekst";

    alert(string_1 + ' ' + string_2);
    // można oczywiście połączyć to też tak:
    // alert(string_1 + string_2);
</script> 

W wyniku tego kodu otrzymamy alert wyświetlający: „To jest tekst”. Ktoś mógłby zapytać, po co więc ta porada? Otóż, czasem zdarza się, że nie jest tak fajnie, że łączymy tylko dwa stringi, ale chcemy także wpleść w to jaką liczbę. Niestety, jako, że w JS typ danych nie jest na sztywno przypisany do zmiennej [tak, jak np. w C czy Pascalu], to się okazuje, że często dwie liczby zamiast dodać, zostaną połączone, np:

 <script type="text/javascript">
    var liczba_1 = 5;
    var liczba_2 = 2;

    alert('Jacek ma ' + liczba_1 + ' jablek,\n' +
        'a Agatka ma ' + liczba_2 + ' gruszki.\n' +
        'Razem mają więc ' + liczba_1+liczba_2 + ' owoców!');
</script> 

Wynikiem działania tego skryptu będzie: „Jacek ma 5 jabłek, a Agatka ma 2 gruszki. Razem mają 52 owoce!”. Jak widać, niestety zamiast dodać skrypt je złączył – tak jakby operował na tekście. Jest kilka rozwiązań, np objęcie działań nawiasami.

 alert('Razem mają więc ' + (liczba_1+liczba_2) + ' owoców!'); 
Innymi spotykanymi rozwiązaniami jest wprowadzenie dodatkowego działania, które nie zmienia jednak wartości. Np '*1'. Jakakolwiek liczba pomnożona razy 1, da samą siebie.

Jednak moim zdaniem najlepszym rozwiązaniem jest:

var suma = liczba_1+liczba_2;
var ciag_znakow = 'Jacek ma ' + liczba_1 + ' jablek,\n' +
        'a Agatka ma ' + liczba_2 + ' gruszki.\n' +
        'Razem mają więc ' + suma + ' owoców!';

alert(ciag_znakow);

Problem wydaje się banalny, ale w wielu przypadkach może naprawdę sporo zepsuć. Nie zawsze warto skracać kod za wszelką cenę. Czasem dłuższy kod jest czytelniejszy = lepszy.