String su iterabilne kolekcije
String tip podataka je od ES2015 standarda postalo iterabilna kolekcija podataka tzv. “iterable”. Sada su string-ovima dostupni svi mehanizmim koji zahtevaju da kolekcija ima implementiran “iterable protokol”. Pa tako sada možemo nad string-ovima koristiti “for..of”:
1 2 3 4 5 6 7 |
for (const clanKolekcije of 'abc') { console.log(clanKolekcije); } // Vraća: // a // b // c |
ili čak da koristimo spread operator koji takodje zahteva iterable kolekciju za kreiranje niza:
1 2 |
const karakteri = [...'abc']; // console.log(karakteri); // Vraća: ['a', 'b', 'c'] |
Više o ovome pogledajte u delu “Iteratori i Iterable protokol”
Šablonski literali (template literals)
Šablonski literali (eng. “template literals”) su znakovni nizovi (tzv. string) sa ugradjenim izrazima. Obeležavaju se obrnutim polunavodnicima (eng. backtick).
“Template literal” predstavlja novi poboljšani način konkatenacije string-ova, koji je pregledniji i jednostavniji za rad. U template literal-u je dozvoljena ugradnja izraza, ukoliko se obeleže sa dolar znakom i vitičastim zagradama. Template podrazumeva tzv. ” “preset format” dok “literal” predstavlja vrednost koja je napisana tačno onako kako se podrazumeva da se tumači. Stoga svaka nova linija, dodatna praznina (tab) postaju deo tog stringa
Šablonski literali objedinjuju sledeće karakteristike:
- String interpolation
123let first = 'Pera';let last = 'Perić';console.log(`Zdravo ${first} ${last}!`); //Vraća: Zdravo Pera Perić! - Multi-line string literals tzv. “preset format”, tj. kako je zapisano u kodu tako se i interpretira na izlazu.
12345678910let multiLine = `Ovo jeneki stringkoji se definišeu više linija`;// Izlaz://Ovo je//neki string// koji se definiše//u više linija
Primer
Primer uradjen sa ES5 i konkatenacijom string-ova:
1 2 3 4 5 6 7 8 |
var osoba = { ime: 'Petar', nadimak: 'Pera', }; console.log('Zdravo, Ja sam ' + osoba.ime + '!' + "\n" + 'Možete me zvati "' + osoba.nadimak + '".'); // Zdravo, Ja sam Petar! // Možete me zvati "Pera". |
Novi pristup sa šablonskim literalima:
1 2 3 4 5 6 7 8 9 |
var osoba = { ime: 'Petar', nadimak: 'Pera', }; console.log(`Zdravo, Ja sam ${osoba.ime}! Možete me zvati "${osoba.nadimak}".`); // Zdravo, Ja sam Petar! // Možete me zvati "Pera". |