3.1 ์ค์ฒฉ ํํ์
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์์๋ ํจ์ ํธ์ถ, ์ผํญ ์ฐ์ฐ์, ๊ทธ๋ฆฌ๊ณ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ์์ ๋ ๋ค๋ฅธ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ์ฌ์ฉํ๋ ๋ฑ ์ด๋ค ํํ์๋ ์ฌ์ฉํ ์ ์์ด.
์์:
ํํ์ ${a + b}
์์๋ ์ํ ์ฐ์ฐ์ด ์ด๋ฃจ์ด์ง๊ณ , ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๋ฌธ์์ด result
์ ์ฝ์
๋ผ.
const a = 5;
const b = 10;
const result = `The result of ${a} + ${b} is ${a + b}.`;
console.log(result); // "The result of 5 + 10 is 15."
3.2 ์ค์ฒฉ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ค์ฒฉ๋ ์ ์์ด์ ๋ณต์กํ ๋ฌธ์์ด์ ๋ง๋ค ์ ์์ด.
์์:
๊ฐ์ฒด user
์ ๋ฉ์๋ greet()
๊ฐ ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด message
์์ ์ค์ฒฉ๋ผ ์์ด.
const user = {
name: 'Bob',
age: 25,
greet() {
return `Hello, ${this.name}!`;
}
};
const message = `${user.greet()} You are ${user.age} years old.`;
console.log(message); // "Hello, Bob! You are 25 years old."
3.3 ํ๊ทธ๋ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด (Tagged Templates)
ํ๊ทธ๋ ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ ์ฌ์ฉํ๋ฉด ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฒ๋ฆฌํ๊ธฐ ์ํด ํจ์๋ฅผ ํธ์ถํ ์ ์์ด. ์ด๋ฅผ ํตํด ๊ตญ์ ํ, ์์ ํ HTML ์ฝ์ ๋ฑ์ ์ถ๊ฐ์ ์ธ ๋ฌธ์์ด ์กฐ์์ ์ํํ ์ ์์ด.
๋ฌธ๋ฒ:
function tag(strings, ...values) {
// ๋ฌธ์์ด๊ณผ ๊ฐ ์ฒ๋ฆฌ
return ๊ฒฐ๊ณผ;
}
const result = tag`ํ
ํ๋ฆฟ ์คํธ๋ง ์์ ${๋ณ์}`;
์์:
ํจ์ highlight()
๋ ๋ฌธ์์ด๊ณผ ๊ฐ์ ์ฒ๋ฆฌํ๋ฉด์ ๊ฐ์ <span>
ํ๊ทธ๋ก ๊ฐ์ธ์ highlight
ํด๋์ค์ ํจ๊ป ๋ฐํํด.
function highlight(strings, ...values) {
return strings.reduce((result, str, i) =>
`${result}${str}${values[i] || ''}`, '');
}
const name = 'Carol';
const hobby = 'painting';
const message = highlight`My name is ${name} and I love ${hobby}.`;
console.log(message);
// "My name is <span class="highlight">Carol</span> and I love <span class="highlight">painting</span>."
3.4 ์์ ํ ๊ฐ ์ฝ์
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด์ XSS (ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ ) ๊ฐ์ ์ผ๋ฐ์ ์ธ ๋ณด์ ๋ฌธ์ ๋ฅผ ํผํ๋ฉด์ ๊ฐ๋ค์ ์์ ํ๊ฒ ์ฝ์ ํ๋ ๋ฐ ๋์์ ์ค. ํนํ ์ฌ์ฉ์ ๋ฐ์ดํฐ๋ฅผ HTML์ ์ฝ์ ํ ๋ ์ ์ฉํด.
์์:
ํจ์ safeHTML()
๋ ๊ฐ ์์ ์ํํ ๋ฌธ์๋ฅผ ๊ต์ฒดํด XSS ๊ณต๊ฒฉ์ ๋ฐฉ์งํด.
function safeHTML(strings, ...values) {
return strings.reduce((result, str, i) =>
`${result}${str}${String(values[i]).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')}`, '');
}
const userInput = '<script>alert("XSS")</script>';
const message = safeHTML`User input: ${userInput}`;
console.log(message);
// "User input: <script>alert("XSS")</script>"
GO TO FULL VERSION