์ค๋ JSON.stringify()
๋ฅผ ์ฌ๊ทํจ์๋ก ๊ตฌํํ๋ ๊ณผ์ ๊ฐ ์์๋ค. ์ฝ๋์์ฑ์ ์ด๋ ต์ง ์์๋๋ฐ ์์์น๋ ๋ชปํ ๊ณณ์์ ์๊ฐ์ ๋ง์ด ์์๋ค. ๋ฐ๋ก, Template literals...
์ด๊ฒ ์ ๋ผ..? ๋ผ๋ ๋ง๋ง ์ ์ญ๋ฒ ์ธ์น๋ฉด์ ์๊ฒ ๋ ์ฌ์ค์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
์๋๋ ํจ์์ ๋ค์ด์จ ์ธ์๊ฐ ๊ฐ์ฒด์ผ ๋, ์คํ๋๋ ์ฝ๋์ด๋ค.
์๋ก์ด ๋ฐฐ์ด temp
๋ฅผ ์ ์ธํ๋ค.
ํค์ ๊ฐ์ด undefined
์ด๊ฑฐ๋ function
์ด๋ผ๋ฉด stringify๊ฐ ๋๋ฉด ์๋๋ฏ๋ก ๋ฌด์ํ๋ค.
ํค์ ๊ฐ์ด undefined
์ด๊ฑฐ๋ function
์ด ์๋๋ผ๋ฉด ์๋ก์ด ๋ฐฐ์ด์ ํค์ ๊ฐ์ push ํ๋ค.
ํค์ ๊ฐ ํ์
์ ๋ง๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ณํํด์ฃผ๊ธฐ ์ํด์ ๋ณํํจ์์ธ stringify(ํค์๊ฐ)
์ ํธ์ถํ๋ค.
๋ค ๋ณํ์ด ๋์์ผ๋ฉด temp
๋ฐฐ์ด์ ๋ด๊ธด ๊ฒ๋ค์ join()
ํ์ฌ ๋ฐฐ์ด์ ํผ ๋ค, template literal๋ก ๋ง๋ ๊ฐ์ฒด์ ๋ด๋๋ค.
๋ฌธ์ ์์ด ์ ์ฝ๋๊ฐ ์๋ํ๋ค.
`{${temp.join()}}`;
temp
๋ผ๋ ๋ฐฐ์ด์ ๋ชจ์ต์ ๋์ถฉ [' "cat" : "์ผ์น" ', ' "dog" : "๋ฉ๋ฉ" ']
์ด๋ดํ
๊ณ , ์ด ๋ฐฐ์ด์ join()
ํ์ฌ ๋ฐฐ์ด์ ํ์ด ๋ฌธ์์ด๋ก ๋ง๋ ๋ค, template literal ๊ฐ์ฒด ์์ ๋ฃ๊ณ ๋ฐํํ๋ค!
์ด๊ฒ ์๋ ๋ด๊ฐ ์๊ฐํ๋ ์ฝ๋์ ๋์์ด์๋ค.
๊ทธ๋ฐ๋ฐ ์๊น ์ฝ๋์์ .join()
์ ์์ ๋ ๋ฌธ์ ์์ด ์๋ํ๋ค.
`{${temp}}`
์ join()
์ ํ์ง ์์๋ ์ํ๋ ๋์๋๋ก ๋์๊ฐ๋ ๊ฑฐ์ง?
์ด๊ฒ ์... ๋ผ?
์ฝ์์ฐฝ์์๋ ํ์ธํด๋ดค๋ค.
๋ฐฐ์ด์ template literal๋ก ๊ฐ์ธ๋๊น ๋ฐฐ์ด์ด ๋ฒ๊ฒจ์ง๊ณ ๋ฌธ์์ด๋ก ๋ณํ๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ template literal(``)
์ ์ด์ฉํ๊ฑฐ๋,
var a = 5;
var b = 10;
console.log("Fifteen is " + (a + b) + " and\nnot " + (2 * a + b) + ".");
+
์ฐ์ฐ์๋ฅผ ํตํด ํํ์์ ์ผ๋ฐ ๋ฌธ์์ด์ ์ฝ์
ํ ์ ์๋ค.
์ฌ์ค template literal(``)
์ ์ด์ฉํ์ฌ ๋ฌธ์์ด์ ๋ง๋ค ๋ ํํ์ ์ฝ์
(๋ณด๊ฐ๋ฒ)์ +
๋ก ์ฐ์ฐ๋๋ค.
๋ฌธ์์ด์ด ์๋ ๊ฐ์ ๋ฌธ์์ด๋ก ๋ณํํ๋ ์์
์ ToString
์ถ์ ์ฐ์ฐ ๋ก์ง์ด ๋ด๋นํ๋ค. * toString()
์ด๋์ ๋ค๋ฅด๋ค!
์ฐธ๊ณ ๋ธ๋ก๊ทธ ๐ [JavaScript] ๊ฐ์ ๋ณํ - ์ถ์ ์ฐ์ฐ, Abstract operation
์ถ์์ฐ์ฐ์ ํตํด ์์์ ๊ฐ์ ๋ณํ์ด ์ผ์ด๋ template literal๋ก ๋ฐฐ์ด์ ๊ฐ์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ด ๋ฒ๊ฒจ์ ธ์ ๋ฌธ์์ด๋ก ๋ฐํ๋๋ค๋ ๊ฒ์ด๋ค.
๐ ๊ณต์๋ฌธ์ : ECMAScriptยฎ 2023 Language Specification : 7.1.16 ToBigUint64 ( argument )
๊ณต์๋ฌธ์ ์์ ์๋ table ์ด๋ค.
template literal์์ ๋ฌธ์์ด๊ณผ ๊ฐ ๋ณด๊ฐ๋ part๋ค์ด ์ฐ์ฐ์ด ๋๋๋ฐ, ๊ฐ์ ๋ณํ(๊ทธ ์ค ToString)์ ํตํด ์ฐ์ฐ๋๋ค๋ ๋ป์ด๋ค.
${[1,2,3,4]}
์ด๋ ๊ฒ template literal์ ๊ฐ์ธ์ง ๋ฐฐ์ด์ด ์๋ค๊ณ ๊ฐ์ ํด๋ณด์.
๋ณด๊ฐ๋ ๋ฐฐ์ด์ type object
์ด๋ฏ๋ก, ์ ํ์ ์๋ ๊ท์น ์ค Object
๋ฅผ ๋ฐ๋ฅธ๋ค.
๊ท์น ๋ด์ฉ ๐
Apply the following steps:
1. Let primValue be ? ToPrimitive(argument, string).
2. Return ? ToString(primValue).
Let primValue be ? ToPrimitive(argument, string).
primValue๋ฅผ ToPrimitive(argument, string) ์ด๋ผ๊ณ ํ์ ๋ผ๋ ๋ป์ด๋ค.(ํ์คํ์ง ์์, ํ์ฐธ ์ฝ์ด๋ณธ ๊ฒฝํ์ ๋ฐ๋ฅธ ํ๋จ)
๋ค์ ์ ํ์ ํ๋ฆ์ ๋ฐ๋ผ ToPrimitive
๋ก ๊ฐ๋ณด๋ฉด, ๋ ๊ท์น์ ๋ง์ฃผํ๊ฒ ๋๋ค.
๐ ๊ณต์๋ฌธ์ : ECMAScriptยฎ 2023 Language Specification :7.1.1 ToPrimitive ( input [ , preferredType ] )
ToString
์ฐ์ฐ์ ์ด์ด ToPrimitive(argument, string)
์ฐ์ฐ์ผ๋ก ๋์ด์๋ค.
์ ๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ฉด ์ด ๊ณผ์ ์ ๊ฑฐ์ณ preferredType
์ด string
์ด ๋ ๊ฒ์์ ์์ํ๋ค. (๊ทธ๋์ hint
๋ string
์ด๋ค)
๋ฐฐ์ด์ type์ object
์ด๋ฏ๋ก, ํ์ a๋ก ๊ฐ๊ฒ ๋๊ณ exoticToPrim
์ GetMethod(๋ฐฐ์ด, @@toPrimitive)
์ด๋ผ๊ณ ํ๋ค.
(์ข ์ด๋ ค์ด๋ฐ ์ฝ๊ฒ ๋ณด์๋ฉด ๊ทธ๋ฅ ๋ฐฐ์ด์ ๋ฉ์๋์ธ .toString()
์ ์ด๋ค๋ ๋ป์ผ๋ก ์ถ์ ๋๋ค.)
์ด๋ ๊ฒ ๋ณต์กํ ์ผ๋ จ์ ๊ณผ์ ์ ํตํด์, template literal๋ก ๋ฐฐ์ด์ ๋ณด๊ฐํ๋ฉด .toString()
์ ํธ์ถํ์ฌ ๋ฐฐ์ด์ ๋ฒ๊ฒจ ๋ฌธ์์ด๋ก ๋ง๋๋ ๊ฒ์ด๋ค.
๊ทธ๋ฌ๋ฉด .toString()
๋ฉ์๋๋ฅผ ๊ฐ์ง์ง ์๋ undefined
๋ null
์ ์ด๋ป๊ฒ ๋ ๊น?
์๊น table์ ์๋ ๋ด์ฉ์ ์ฐธ๊ณ ํด๋ณด์๋ฉด, undefined์ "undefined" ๋ก ๋ณํ๋๊ณ , null์ "null"๋ก ๋ณํ๋๋ค.
template literal์ "" + ๋ณ์ + ""
์ฒ๋ผ ๋์ํ๋ค.
๋ฐฐ์ด์ template literal๋ก ๊ฐ์ ๊ฒฝ์ฐ ์์์ ๊ฐ์ ๋ณํ์ด ์ผ์ด๋ ์ถ์์ฐ์ฐ์ ํตํด .toString()
๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฐฐ์ด์ด ๋ฒ๊ฒจ์ง๊ณ ๋ฌธ์์ด์ด ๋ฐํ๋๋ค.
์ง์ง ๊ฐ๋ฌด์ํ๋ template literalํํ ๊ฐ ๋๋๋ ค ๋ง์ ํ๋ฃจ์๋ค. ์์๋ด๋๋ฐ 2์๊ฐ, ์ ๋ฆฌํ๋๋ฐ 2์๊ฐ ๊ฑธ๋ ธ๋ค. ์์ฃผ ์๋ฏธ์์ง ์์๋ค. ๋๋ฆ๋๋ก ์ด๋ป๊ฒ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋์๊ฐ๋์ง ๊ณต๋ถ๊ฐ ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ดค์ ๊ฐ๋ฏธ๋ฅ๊พธ๋ฉ๋งํผ๋ ์๋๊ฒ ์ง๋ง,,
ํน์๋ ์๋ชป๋ ์ ๋ณด๊ฐ ์๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์ธ์ ! ์ ์ ์ฑ์ฅ์ ํฐ ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค.๐ฑ