Lehet-e javascriptben template literálokat egymásba ágyazni?
Tehát ha jól értem, van egy ehhez hasonló objektumod:
roll = {
roll_1: 2,
roll_2: 4,
roll_3: 6
};
és egy "i" változód:
i = 1;
esetleg valahogy így lehetne:
eval(`\`\$\{roll.roll_${i}\}\``)
de ez nem a legelegánsabb megoldás, sőt, ellenjavallt:
Én inkább átalakítanám az objektumot ilyesmire:
roll = {
roll: [2, 4, 6]
}
és akkor lehetne így használni:
`${roll.roll[(i - 1)]}`
Vagy, ha mindenképpen maradnál az eredeti objektumnál, kiegészítheted egy függvénnyel:
és akkor hivatkozhatsz így:
`${roll.getroll(i)}`
A javascriptben a template literálok használatához a backtick (`) karaktert kell használni, és a kifejezéseket ${expression} formában kell beilleszteni. Ha egy template literálban backtick-et szeretnél használni, akkor azt egy backslash-szel (\) kell megelőzni. Például: \`` ugyanaz, mint "`".
A példádban a ${roll.roll_${i}} nem működik, mert a ${expression} csak egy kifejezést fogad el, nem egy másik template literált. Ebben az esetben a string összefűzését kell használnod. De az "expression" kifejezésben megengedett a metódus hívás is, így ha változó egy objektum vagy referencia, akkor egy hívással megadható a kívánt érték beillesztése.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!