ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

javascript/๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ

4. template strings

๋Œ•๋Œ•์ด๋ฐœ๐Ÿพ 2018. 12. 24. 11:33



์ด๋ฒˆ์— ์†Œ๊ฐœํ•  ๋ถ€๋ถ„์€ template strings ์ž…๋‹ˆ๋‹ค. ์ผ๋ช… "๋ฐฑํ‹ฑ" ์ด๋ผ๊ณ ํ•˜๋Š” ` (๋Š๋‚Œํ‘œ ์™ผ์ชฝ์— ์žˆ๋Š” ๋ฌธ์ž) ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ ‘ํ–ˆ๋˜ ๋ฐฑํ‹ฑ์˜ ๊ธฐ๋Šฅ์€ ์—ฌ๋Ÿฌ ์ค„์— ๊ฑธ์นœ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.


Multi-line strings

1
2
3
4
5
6
7
var str = `
๋™ํ•ด๋ฌผ๊ณผ ๋ฐฑ๋‘์‚ฐ์ด ๋งˆ๋ฅด๊ณ ๋‹ณ๋„๋ก
ํ•˜๋Š๋‹˜์ด ๋ณด์šฐํ•˜์‚ฌ ์šฐ๋ฆฌ ๋‚˜๋ผ๋งŒ์„ธ
๋ฌด๊ถํ™” ์‚ผ์ฒœ๋ฆฌ ํ™”๋ ค๊ฐ•์‚ฐ
๋Œ€ํ•œ์‚ฌ๋žŒ ๋Œ€ํ•œ์œผ๋กœ ๊ธธ์ด๋ณด์ „ํ•˜์„ธ
`
console.log(str)
cs

์ด๋Ÿฐ์‹์œผ๋กœ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด์„ ์—ฌ๋Ÿฌ์ค„์— ๊ฑธ์ณ์„œ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŽธ๋ฆฌํ•˜๊ธด ํ•˜๊ฒ ์ง€๋งŒ ์ €๋ ‡๊ฒŒ ๊ธด ๋ฌธ์ž์—ด๋ณ€์ˆ˜๋ฅผ ์“ธ ์ผ์ด ์–ผ๋งˆ๋‚˜ ์žˆ์„๊นŒ์š”? ๋‹ค๋ฅธ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


Expression interpolation(ํ‘œํ˜„์‹ ์‚ฝ์ž…๋ฒ•)

1
2
3
4
5
var month = 12
var season = "๊ฒจ์šธ"
 
console.log(`${month}์›”์€ ${season} ์ž…๋‹ˆ๋‹ค.`);
//console.log(month+"์›”์€ "+season+"์ž…๋‹ˆ๋‹ค.");
cs

=> ๋ฐฑํ‹ฑ ์•ˆ์— ${๋ณ€์ˆ˜๋ช…} ์„ ์จ์„œ ๋ฌธ์ž์—ด๊ณผ ๋ณ€์ˆ˜๋ฅผ ๋™์‹œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์•„๋ž˜ ์ฃผ์„๊ณผ ๊ฐ™์ด '+' ๊ธฐํ˜ธ๋ฅผ ํ†ตํ•ด ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•˜๊ธดํ•˜์ฃ . ๊ตณ์ด ๋”ฐ์ง€์ž๋ฉด ์ฒซ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์ด ์กฐ๊ธˆ ๋” ๊น”๋”ํ•ด๋ณด์ด์ฃ ?



๊ทธ๋ฆฌ๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ํƒœ๊ทธ๋œ ํ…œํ”Œ๋ฆฟ ์ด๋ผ๋Š” ๋ฌธ๋ฒ•์ด ๋‚˜์˜ต๋‹ˆ๋‹ค. ํƒœ๊ทธ๋œ ํ…œํ”Œ๋ฆฟ์€ ๋ฐฑํ‹ฑ ์•ž์— ํƒœ๊ทธ(tag)๋ฅผ ํ•˜๋‚˜ ๋” ๋ถ™์ธ ํ…œํ”Œ๋ฆฟ ๋ฌธ์ž์—ด๋กœ, ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์˜ ๋”์šฑ ๋ฐœ์ „๋œ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

Tagged templates

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var person = 'Hyeong';
var age = 27;
 
function myTag(strings, personExp, ageExp) {
 
  var str0 = strings[0]; // "that "
  var str1 = strings[1]; // " is a "
  var ageStr;
  if (ageExp > 99){
    ageStr = 'centenarian';
  } else {
    ageStr = 'youngster';
  }
  return str0 + personExp + str1 + ageStr;
}
 
var tagged_literal = myTag`that ${ person } is a ${ age }`;
var nomal = myTag(["that "," is a "], person,age);
 
console.log(tagged_literal);    //that Hyeong is a youngster
console.log(nomal)              //that Hyeong is a youngster
cs
(์ถœ์ฒ˜ : https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Template_literals)


๋งˆ์น˜ myTag ํ•จ์ˆ˜๋ฅผ ๋ฐฑํ‹ฑ์œผ๋กœ ํ˜ธ์ถœ์„ ํ•˜๋Š” ๊ฒƒ ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ด„ํ˜ธ ์•ˆ์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์„œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š”๋ฐ, ๋ฐฑํ‹ฑ ์•ˆ์— ๋ฌธ์ž์—ด๊ณผ ํ‘œํ˜„์‹์„ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋กœ ํ‘œํ˜„์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ข€ ํŠน์ดํ•œ ์ ์€ strings ๋ผ๋Š” ๋ฐฐ์—ด์„ ์ผ๋ฐ˜์ ์€ ๋ฐฐ์—ด ํ‘œ๊ธฐ๋ฒ•์ธ []๋กœ ๋„ฃ์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ strings ๋ฅผ ์ฝ˜์†”๋กœ ์ฐ์–ด๋ณด๊ฒŒ ๋˜๋ฉด 


[ 'that ', ' is a ', '' ] ์ด์™€๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ต๋‹ˆ๋‹ค. ์‚ฌ์‹ค์ƒ ๋งจ ๋งˆ์ง€๋ง‰์— ๊ณต๋ฐฑ์ด ๋“ค์–ด๊ฐ€๋Š” ์ธ๋ฑ์Šค๊ฐ€ ํ•˜๋‚˜ ๋‚จ๊ฒŒ ๋˜๋Š”๊ฑฐ์ฃ  ๋ฐฐ์—ด์˜ ์ด ๊ธธ์ด๋Š” ํ‘œํ˜„์‹์˜ ๊ฐœ์ˆ˜ + 1 ์ด๋ผ๊ณ  ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ๋ฐฑํ‹ฑ ์•ˆ์—์„œ์š”


์ด์ƒ template strings ์— ๊ด€ํ•œ ํฌ์ŠคํŒ…์„ ๋งˆ์น˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
ยซ   2025/01   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ