๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/JavaScript ES6

[JavaScript / ES6] Template literals ์•Œ์•„๋ณด๊ธฐ

by Connecting-the-dots 2022. 4. 12.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

๐Ÿ’œ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์—

  • Template literals ๋Š” JavaScript ์—์„œ ๋ฌธ์ž๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์–ด๋ ค์› ๋˜ ์ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‚˜์˜จ ๋ฌธ๋ฒ•์ด๋‹ค.
  • ๋”ฐ์˜ดํ‘œ ๋Œ€์‹ ์— backquote, backtick ( ` )์ด๋ผ๋Š” ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ž๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.
    (ํ‚ค๋ณด๋“œ ์ƒ์˜ ๋ฌผ๊ฒฐ ๊ธฐํ˜ธ ์•„๋ž˜์— ์žˆ๋‹ค.)

๐Ÿ’œ Template literals

๐Ÿค ๋ฌธ์ž ์ค‘๊ฐ„์— ์—”ํ„ฐํ‚ค ์ž…๋ ฅ ๊ฐ€๋Šฅ

var ๋ฌธ์ž = `
์•ˆ๋…•ํ•˜์„ธ์š”.
ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š”
๋ฐ•์„œ์œค์ž…๋‹ˆ๋‹ค.
`;
  • JavaScript ๋ฌธ์ž์—ด์€ ๋ฌธ์ž ์ค‘๊ฐ„์— ์—”ํ„ฐํ‚ค๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋œ๋‹ค.
  • ํ•˜์ง€๋งŒ backtick ์œผ๋กœ ๋ฌธ์ž๋ฅผ ๋งŒ๋“ ๋‹ค๋ฉด ์—”ํ„ฐํ‚ค๋ฅผ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿค ๋ฌธ์ž ์ค‘๊ฐ„์— ๋ณ€์ˆ˜ ๋„ฃ์„ ๋•Œ ํŽธ๋ฆฌ

  var ๋ณ€์ˆ˜1 = '๋ฐ•์„œ์œค';
  var ๋ณ€์ˆ˜2 = 'ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž'
  
  var ๋ฌธ์ž1 = '์•ˆ๋…•ํ•˜์„ธ์š”! ' + ๋ณ€์ˆ˜2 + '๋ฅผ ๊ฟˆ๊พธ๋Š” ' + ๋ณ€์ˆ˜1 + '์ž…๋‹ˆ๋‹ค.';
  var ๋ฌธ์ž2 = `์•ˆ๋…•ํ•˜์„ธ์š”! ${ ๋ณ€์ˆ˜2 }๋ฅผ ๊ฟˆ๊พธ๋Š” ${ ๋ณ€์ˆ˜1 }์ž…๋‹ˆ๋‹ค.`;
  • JavaScript ์—์„œ ๋ฌธ์ž ์ค‘๊ฐ„์— ๋ณ€์ˆ˜๋ฅผ ๋„ฃ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ์—๋Š” ์œ„ ์ฝ”๋“œ์˜ ๋ฌธ์ž1 ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด์„ ์ชผ๊ฐ  ๋‹ค์Œ + ๊ธฐํ˜ธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
  • ํ•˜์ง€๋งŒ backtick ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๊ฐ€ ํ•„์š”ํ•œ ์œ„์น˜์— ${ ๋ณ€์ˆ˜๋ช… } ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์‰ฝ๊ฒŒ ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

  var ๋ณ€์ˆ˜ = '๋ฐ•์„œ์œค';
  var ๋ณ€์ˆ˜2 = 'ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž'
  var ํ…œํ”Œ๋ฆฟ = `
  <div>
  	${ ๋ณ€์ˆ˜2 } ${ ๋ณ€์ˆ˜ } 
  </div>
  `;
  
  console.log(ํ…œํ”Œ๋ฆฟ);  // <div> ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ๋ฐ•์„œ์œค </div>
  • ์ด๋Š” JavaScript ์—์„œ ๋ณ€์ˆ˜์— html ์„ ๋‹ด์•„์„œ ์‚ฌ์šฉํ•  ๋•Œ์—๋„ ๋”ฐ์˜ดํ‘œ๋ฅผ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ ๋ณด๋‹ค ํ›จ์”ฌ ๋ณด๊ธฐ๊ฐ€ ํŽธํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ ์šฉํ•˜๋‹ค.

๐Ÿ’œ Tagged template literals

  • ES6 ๋Š” tagged template literals ๋ผ๊ณ  ํ•ด์„œ ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ž ํ•ด์ฒด๋ถ„์„๊ธฐ๋Šฅ์„ ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ๋‹ค.
  • ์ด๋Š” ๋ฌธ์ž ์ค‘๊ฐ„์ค‘๊ฐ„์— ์žˆ๋Š” ๋‹จ์–ด์˜ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ๋‹จ์–ด๋ฅผ ์ œ๊ฑฐํ•  ๋•Œ, ํ˜น์€ ๋ณ€์ˆ˜์˜ ์œ„์น˜๋ฅผ ์˜ฎ๊ธธ ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿค ์‚ฌ์šฉ๋ฐฉ๋ฒ•

function ํ•ด์ฒด๋ถ„์„๊ธฐ(๋ฌธ์ž๋“ค, ๋ณ€์ˆ˜๋“ค, ๋ณ€์ˆ˜๋“ค2){
    console.log(๋ฌธ์ž๋“ค);
    console.log(๋ณ€์ˆ˜๋“ค);
    console.log(๋ณ€์ˆ˜๋“ค2);
};

ํ•ด์ฒด๋ถ„์„๊ธฐ`์•ˆ๋…•ํ•˜์„ธ์š”! ${ ๋ณ€์ˆ˜2 }๋ฅผ ๊ฟˆ๊พธ๋Š” ${ ๋ณ€์ˆ˜ }์ž…๋‹ˆ๋‹ค.`;

// ['์•ˆ๋…•ํ•˜์„ธ์š”! ', '๋ฅผ ๊ฟˆ๊พธ๋Š” ', '์ž…๋‹ˆ๋‹ค.', raw: Array(3)]
// ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž
// ๋ฐ•์„œ์œค
  • ํ•ด์ฒด๋ถ„์„๊ธฐ ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ 2๊ฐœ ์ถ”๊ฐ€ํ•ด์ค€ ํ›„์— ์†Œ๊ด„ํ˜ธ ๋Œ€์‹  backtick ๊ธฐํ˜ธ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์„ ๋ถ™์—ฌ์„œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ํ•ด์ฒด๋ถ„์„ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ "๋ฌธ์ž๋“ค"์€ backtick ๊ธฐํ˜ธ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์—์„œ ์ˆœ์ˆ˜ํ•œ ๋ฌธ์ž๋งŒ ๊ณจ๋ผ์„œ ์ด๋ฅผ Array ๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
    (์ด ๋•Œ์˜ ๋ฌธ์ž๋Š” ${} ๊ธฐํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋‰œ ๋ฌธ์ž ๋ฉ์–ด๋ฆฌ๋“ค์„ ๋งํ•œ๋‹ค.)
  • ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์ธ "๋ณ€์ˆ˜๋“ค"์€ backtick ๊ธฐํ˜ธ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์—์„œ ${ } ๋ณ€์ˆ˜๋ฅผ ๋‹ด์•„์ค€๋‹ค.
    (๋ณ€์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ผ๋ฉด ๋’ค์— ๊ณ„์† ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.)
  • ์ด์ œ ์ด ํŒŒ๋ผ๋ฏธํ„ฐ๋“ค๋กœ ์œ„์™€ ๊ฐ™์ด backtick ๊ธฐํ˜ธ๋กœ ๊ฐ์‹ผ ๋ฌธ์ž์—ด์„ ์žฌ์กฐํ•ฉํ•˜๊ฑฐ๋‚˜ ๋ถ„์„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. 

๐Ÿค ์‚ฌ์šฉ์˜ˆ์‹œ

var ๋ณ€์ˆ˜ = '๋ฐ•์„œ์œค';
var ๋ณ€์ˆ˜2 = 'ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž'

function ํ•ด์ฒด๋ถ„์„๊ธฐ2(๋ฌธ์ž๋“ค, ๋ณ€์ˆ˜๋“ค, ๋ณ€์ˆ˜๋“ค2){
	console.log(๋ณ€์ˆ˜๋“ค + ๋ฌธ์ž๋“ค[1] + ๋ณ€์ˆ˜๋“ค2 + ๋ฌธ์ž๋“ค[2] + " "+ ๋ฌธ์ž๋“ค[0]);
};

ํ•ด์ฒด๋ถ„์„๊ธฐ2`์•ˆ๋…•ํ•˜์„ธ์š”! ${ ๋ณ€์ˆ˜2 }๋ฅผ ๊ฟˆ๊พธ๋Š” ${ ๋ณ€์ˆ˜ }์ž…๋‹ˆ๋‹ค.`;  

// ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ๋ฐ•์„œ์œค์ž…๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”!
  • ์œ„์™€ ๊ฐ™์ด ์›๋ž˜ '์•ˆ๋…•ํ•˜์„ธ์š”! ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ๋ฐ•์„œ์œค์ž…๋‹ˆ๋‹ค.' ์˜€๋˜ ๋ฌธ๊ตฌ๋ฅผ ์žฌ์กฐํ•ฉํ•˜์—ฌ 'ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋ฅผ ๊ฟˆ๊พธ๋Š” ๋ฐ•์„œ์œค์ž…๋‹ˆ๋‹ค. ์•ˆ๋…•ํ•˜์„ธ์š”!' ์™€ ๊ฐ™์ด ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

var items1 = 20;
var items2 = 100;

function ํ•ด์ฒด๋ถ„์„๊ธฐ3(๋ฌธ์ž๋“ค, ...๋ณ€์ˆ˜๋“ค){
	console.log(๋ฌธ์ž๋“ค[0] + ๋ณ€์ˆ˜๋“ค[1] + ๋ฌธ์ž๋“ค[1] + ๋ณ€์ˆ˜๋“ค[0] + ๋ฌธ์ž๋“ค[2]);
};

ํ•ด์ฒด๋ถ„์„๊ธฐ3`๋ฐ”์ง€๋Š” ${ items1 } ๊ฐœ ์žˆ์–ด์š”. ์–‘๋ง์€ ${ items2 } ๊ฐœ ์žˆ์–ด์š”.`;  
// ๋ฐ”์ง€๋Š” 100 ๊ฐœ ์žˆ์–ด์š”. ์–‘๋ง์€ 20 ๊ฐœ ์žˆ์–ด์š”.
  • ์›๋ž˜๋Š” '๋ฐ”์ง€๋Š” 20 ๊ฐœ ์žˆ์–ด์š”. ์–‘๋ง์€ 100 ๊ฐœ ์žˆ์–ด์š”.' ๋ผ๋Š” ๋ฌธ๊ตฌ์ธ๋ฐ ๋ฐ”์ง€์™€ ์–‘๋ง์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์„œ ๋ฌธ์ž์˜ ์œ„์น˜๋ฅผ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

var items3 = 100;
var items4 = 0;

function ํ•ด์ฒด๋ถ„์„๊ธฐ4(๋ฌธ์ž๋“ค, ...๋ณ€์ˆ˜๋“ค){
    if (items4 === 0){
    	console.log(`์–‘๋ง ๋‹ค ํŒ”๋ ธ์–ด์š”! ${๋ฌธ์ž๋“ค[0]}${๋ณ€์ˆ˜๋“ค[0]}${๋ฌธ์ž๋“ค[2]}`)
    }
};

ํ•ด์ฒด๋ถ„์„๊ธฐ4`๋ฐ”์ง€๋Š” ${ items3 } ์–‘๋ง์€ ${ items4 } ๊ฐœ ์žˆ์–ด์š”.`;  
// ์–‘๋ง ๋‹ค ํŒ”๋ ธ์–ด์š”! ๋ฐ”์ง€๋Š” 100 ๊ฐœ ์žˆ์–ด์š”.
  • ์›๋ž˜ '๋ฐ”์ง€๋Š” 100 ๊ฐœ ์žˆ์–ด์š”. ์–‘๋ง์€ 0 ๊ฐœ ์žˆ์–ด์š”.' ๋ผ๋Š” ๋ฌธ๊ตฌ์˜€๋‹ค๋ฉด, ์–‘๋ง์ด 0 ๊ฐœ์ผ ๋•Œ "์–‘๋ง์ด ๋‹ค ํŒ”๋ ธ์–ด์š”!" ๋ผ๋Š” ๋ฌธ๊ตฌ๋กœ ๋ฐ”๊พธ๊ณ  ์‹ถ๋‹ค๋ฉด ์œ„์™€ ๊ฐ™์ด if ๋ฌธ์„ ์ž‘์„ฑํ•ด์„œ ๋ฌธ์ž๋ฅผ ์ˆ˜์ •ํ•ด์ค„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

 

 

728x90
๋ฐ˜์‘ํ˜•