๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ
-
์๋ฐ์คํฌ๋ฆฝํธ์ ํจ์๋ ๊ฐ์ฒด์ผ๊น?์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 18. 16:51
Function์ ๋ํ mdn ๋ฌธ์๋ฅผ ๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๋์์๋ค. In JavaScript, functions are first-class objects, because they can be passed to other functions, returned from functions, and assigned to variables and properties. They can also have properties and methods just like any other object. What distinguishes them from other objects is that functions can be called. "ํจ์๋ ์ผ๊ธ ๊ฐ์ฒด๋ค"๋ผ๋ ๋ด์ฉ์ด๋ฉฐ, ๋ค์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒ์ ์ผ๊ธ๊ฐ์ฒด๋ผ๊ณ ํ๋ ๊ฒ์ ์ ..
-
ํํ์๊ณผ ๋ฌธ, ๊ทธ๋ฆฌ๊ณ React์ JSX์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 18. 12:38
1. ํํ์(Expression) ํํ์์ด๋ ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์๋ ๋ฌธ(statement)์ด๋ค. ํํ์์ด ํ๊ฐ๋๋ฉด ์๋ก์ด ๊ฐ์ ์์ฑํ๊ฑฐ๋ ๊ธฐ์กด ๊ฐ์ ์ฐธ์กฐํ๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ๋ฌธ๋ค์ ๋ชจ๋ ํํ์์ด๋ค. 100; 50 + 50; // ๋ฆฌํฐ๋ด & ์ฐ์ฐ์๋ก ์ด๋ฃจ์ด์ ธ ์๋๋ฐ ํ๊ฐ๋์ด ๊ฐ 100์ ์์ฑํ๋ฏ๋ก ํํ์ score; // ๋ณ์ ์๋ณ์๋ฅผ ์ฐธ์กฐํ๋ฉด ๋ณ์ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ค. // ์๋ณ์ ์ฐธ์กฐ๋ ๊ฐ์ ์์ฑํ์ง๋ ์์ง๋ง ๊ฐ์ผ๋ก ํ๊ฐ๋๋ฏ๋ก ํํ์์ด๋ค. // ๋ฆฌํฐ๋ด ํํ์ // ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ํ๊ฐ๋์ด ๊ฐ์ ์์ฑํ๋ฏ๋ก ๊ทธ ์์ฒด๋ก ํํ์ 10 'Hello' // ์๋ณ์ ํํ์(์ ์ธ์ด ์ด๋ฏธ ์กด์ฌํ๋ค๊ณ ๊ฐ์ ) // ์๋ณ์ ์ฐธ์กฐ๋ ๊ฐ์ ์์ฑํ์ง๋ ์์ง๋ง ์ฐธ์กฐํ๊ณ ์๋ ๊ฐ์ผ๋ก ํ๊ฐ๋๋ฏ๋ก ํํ์ sum pers..
-
์๋ฐ์คํฌ๋ฆฝํธ ๋ฐฐ์ด์ ์ฌ์ค ๊ฐ์ฒด๋ค!์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 13. 20:05
typeof ๋ฐฐ์ด === ๊ฐ์ฒด? typeof ๋ฅผ ํตํด ๋ฐฐ์ด์ ํ์ ์ ์ฝ์์ ์ฐ์ด๋ณด๋ฉด object๋ผ๊ณ ๋์จ๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐฐ์ด์ด๋ผ๋ ํ์ ์ ๋ฐ๋ก ์กด์ฌํ์ง ์๋๋ค. ๋ฐฐ์ด์ ์ฌ์ค์ ๊ฐ์ฒด ํ์ ์ด๋ค. ๊ทธ๋ ์ง๋ง ์ผ๋ฐ ๊ฐ์ฒด์๋ ๊ตฌ๋ณ๋๋ ํน์ง์ด ์๋ค. ๊ตฌ๋ถ ๊ฐ์ฒด ๋ฐฐ์ด ๊ตฌ์กฐ ํ๋กํผํฐ ํค, ํ๋กํผํฐ ๊ฐ ์ธ๋ฑ์ค์ ์์ ๊ฐ์ ์ฐธ์กฐ ํ๋กํผํฐ ํค ์ธ๋ฑ์ค ๊ฐ์ ์์ X O length ํ๋กํผํฐ X O ๊ฐ์ฅ ๋ช ํํ ์ฐจ์ด์ ์ "๊ฐ์ ์์"์ "length ํ๋กํผํฐ"๊ฐ ์๋ค๋ ๊ฒ์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ์ง๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฒ์/๋ง์ง๋ง/ํน์ ์์น๋ถํฐ ์์ฐจ์ ์ผ๋ก ์์์ ์ ๊ทผํ ์๊ฐ ์๋ค. ๋ ๊ฐ์ง ์ข ๋ฅ์ ๋ฐฐ์ด ๋ฐฐ์ด์๋ ๋ ๊ฐ์ง ์ข ๋ฅ๊ฐ ์๋ค. ๋ฐ์ง ๋ฐฐ์ด(dense array) ์๋ฃ๊ตฌ์กฐ์์ ์ผ๋ฐ์ ์ผ๋ก ๋งํ๋, ๋ฐฐ์ด์ ..
-
์๋ฐ์คํฌ๋ฆฝํธ์ 7๋ฒ์งธ ์์ํ ํ์ ์ด ์๋ค๋๋ฐ(Symbol)์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 13. 04:09
TLDR; ์ฌ๋ณผ์ ES6์์ ๋์ ๋ 7๋ฒ์งธ ๋ฐ์ดํฐ ํ์ ์ผ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ํ์ ์ ๊ฐ์ด๋ค. ์ฌ๋ณผ์ ๋ค๋ฅธ ๊ฐ๊ณผ ์ค๋ณต๋์ง ์๋ ์ ์ผ๋ฌด์ดํ ๊ฐ์ผ๋ก, ์ด๋ฆ ์ถฉ๋์ด ์๋ ์ ์ผํ ํ๋กํผํฐ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ฌ๋ณผ์ ES6์์ ๋์ ๋ 7๋ฒ์งธ ๋ฐ์ดํฐ ํ์ ์ผ๋ก ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ์์ ํ์ ์ ๊ฐ์ด๋ค. ์ฌ๋ณผ์ ๋ค๋ฅธ ๊ฐ๊ณผ ์ค๋ณต๋์ง ์๋ ์ ์ผ๋ฌด์ดํ ๊ฐ์ผ๋ก, ์ด๋ฆ ์ถฉ๋์ด ์๋ ์ ์ผํ ํ๋กํผํฐ ํค๋ฅผ ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ์ฌ๋ณผ ์ฌ์ฉ๋ฒ Symbol ์์ฑ Symbol ํจ์๋ฅผ ํธ์ถํ์ฌ ์์ฑ ( )๊ดํธ ์์ ๋ฌธ์์ด์ ๋๋ฒ๊น ์ฉ๋๋ก๋ง ์ฌ์ฉ๋๋ ์ฌ๋ฒ๊ฐ์ ๋ํ ์ค๋ช ์ ์๋ฌด๋ฆฌ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ง์ด ๋ง๋ค์ด๋ ์ ๋ ๊ฐ์๊ฒ ๋ง๋ค์ด์ง์ง ์์(์ฌ๋ฒ์ ์ ์ผ๋ฌด์ดํ ๊ฐ) const mySymbol = Symbol(); // Symbol ํจ์ ํธ์ถํ๋ฉด ๋๋ค. con..
-
์๋ฐ์คํฌ๋ฆฝํธ ์ดํฐ๋ฌ๋ธ๊ณผ ์ ๋๋ ์ดํฐ์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 13. 00:14
TLDR; ์ดํฐ๋ฌ๋ธ ํ๋กํ ์ฝ์ ์ค์ํ ๊ฐ์ฒด๋ฅผ ์ดํฐ๋ฌ๋ธ์ด๋ผ๊ณ ํ๋ค. ์ดํฐ๋ฌ๋ธ์ Symbol.iterator๋ฉ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ, ๋ฉ์๋ ์คํ์ nextํจ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฐํํ๋๋ฐ, nextํจ์ ์คํ์ value์ done์ ํ๋กํผํฐ๋ก ๊ฐ์ง๊ณ ์๋ ์ดํฐ๋ ์ดํฐ ๋ฆฌ์ ํธ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ค. ์ดํฐ๋ฌ๋ธ์ for...of๋ฌธ, spread๋ฌธ๋ฒ, ๋์คํธ๋ญ์ณ๋ง ํ ๋น ๋ฑ์ด ๊ฐ๋ฅํ๋ค. ์ ์ฌ๋ฐฐ์ด๊ฐ์ฒด์ ์ดํฐ๋ฌ๋ธ์ ๊ตฌ๋ถํ ํ์๊ฐ ์๋๋ฐ, ์ ์ฌ๋ฐฐ์ด๊ฐ์ฒด๋ ์ธ๋ฑ์ค์ length๋ฅผ ๊ฐ์ง๊ณ ์์ด์ ์ธ๋ฑ์ค๋ก ์ ๊ทผ๊ฐ๋ฅํ๊ณ , for ๋ฌธ์ด ์ฌ์ฉ๊ฐ๋ฅํ ๊ฐ์ฒด์ด๋ค. ์ดํฐ๋ฌ๋ธ์ ์ดํฐ๋ ์ดํฐ ํ๋กํ ์ฝ์ ์ค์ํ ๊ฐ์ฒด์ด๋ค. ๋ฐ๋ผ์ ์ ์ฌ๋ฐฐ์ด๊ฐ์ฒด๊ฐ ๋ฐ๋์ ์ดํฐ๋ฌ๋ธ์ ์๋๋ค. ์ ์ฌ๋ฐฐ์ด๊ณผ ์ดํฐ๋ฌ๋ธ์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด ํ์ฉํ ์ ์๋๋ฐ, Array.from()์..
-
์๋ฐ์คํฌ๋ฆฝํธ์ Getter / Setter์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 11. 06:29
TLDR; ์๋ฐ์คํฌ๋ฆฝํธ์ Getter / Setter๋ ์ ๊ทผ์ ํ๋กํผํฐ๋ก, ํ๋กํผํฐ์ ๊ฐ์ ํต์ ํ๊ฑฐ๋ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฐํ๊ฒ ๋์ฒํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ค. ๋ฐ์ดํฐ ํ๋กํผํฐ์ ๋ค๋ฅด๊ฒ [[Value]]ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ฐ์ง๊ณ ์์ง ์์, setter์ getter๋ก ์ ์ํ ์ ๊ทผ์ ํ๋กํผํฐ๋ ์ฝ๊ณ ์ธ ์ ์์ง๋ง ์ฝ์๋ก ํ์ธํ์ ๋์๋ ์ค์ ๋ก๋ ์กด์ฌํ์ง ์๋ ๊ฐ์์ ํ๋กํผํฐ์ด๋ค. ๋ฐ์ดํฐ ํ๋กํผํฐ vs ์ ๊ทผ์ ํ๋กํผํฐ ์๋ฐ์คํฌ๋ฆฝํธ์ ํ๋กํผํฐ๋ ๋ฐ์ดํฐ ํ๋กํผํฐ์ ์ ๊ทผ์ ํ๋กํผํฐ๋ก ๊ตฌ๋ถํ ์ ์๋ค. ๊ตฌ๋ถ ์ค๋ช ๋ฐ์ดํฐ ํ๋กํผํฐ(data property) ํค-๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ์ผ๋ฐ์ ์ธ ํ๋กํผํฐ, ์ง๊ธ๊น์ง ๋ด๊ฐ ์๋ ๋์ ๋ณด์ด๋ ๊ทธ ํ๋กํผํฐ ์ ๊ทผ์ ํ๋กํผํฐ(accessor property) ์์ฒด์ ์ผ๋ก๋ ๊ฐ์ ๊ฐ์ง ์๊ณ ([[Valu..
-
์์ ๋ณต์ฌ, ๋ฆฌ์กํธ์์ ์์ฃผ ์ฌ์ฉํ๊ณ ์๋ค๊ณ ?์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 10. 19:47
TLDR; ๋ฆฌ์กํธ์์๋ ์ฑ๋ฅ์ ์ํด ์์ ๋น๊ต๋ฅผ ํตํด state์ ๋ณ๊ฒฝ์ ๊ฐ์งํ๋ค. ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ ๊ธฐ์กด ๊ฐ ๋ณ๊ฒฝ์ ๊ฐ ์์ฒด๊ฐ ๋ณ๊ฒฝ๋์ด ๋ฆฌ์กํธ๊ฐ ์ ์์ ์ผ๋ก ๋น๊ต๋ฅผ ์ํํ์ฌ ๊ฐ์ ์ ๋ฐ์ดํธ ํ ์ ์์ง๋ง, ์ฐธ์กฐํ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ์๋ ๊ธฐ์กด ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ค๊ณ ํ์ฌ๋, ์ฐธ์กฐ๊ฐ์ ๋์ผํ๊ธฐ์ ๋ฆฌ์กํธ๊ฐ state ๋ณ๊ฒฝ์ ๊ฐ์งํ ์ ์๋ค. ๋ฐ๋ผ์ ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ Spread Operator ํน์ Object.assign์ ์ด์ฉํ์ฌ ์์ ๋ณต์ฌ๋ฅผ ์ํํจ์ผ๋ก์ ์ฐธ์กฐ๊ฐ์ ๋ณ๊ฒฝ์์ผ์ค์ผ ํ๋๋ฐ, ์ค์ฒฉ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ์ค์ฒฉ๋ ๊ฐ์ ์ฐธ์กฐ๊ฐ์ด ๋์ด์ง์ง ์๊ณ ์ฌ๋ณธ ๋ณ๊ฒฝ์ ์๋ณธ์ ๊ฐ์ด ๋ณ๊ฒฝํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์, ๋ณ๊ฐ์ ๊ฐ์ฒด๋ก ๋ณด๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ก์ด ์ฐธ์กฐ๊ฐ์ ๊ฐ๋๋ก ์ค์ฒฉ๋ ๊ฐ์ฒด ๋ด๋ถ์์ ํ๋ฒ ๋ ์์ ๋ณต์ฌ๋ฅผ ์ค์ํด ์ค์ผ ํ๋ค. ์ด ์ธ์๋ ๋ฆฌ..
-
์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ์นดํ ๊ณ ๋ฆฌ ์์ 2023. 2. 10. 02:14
TLDR; ์์ ๋ณต์ฌ๋ ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํ๋ ๊ฒ์ด๋ฉฐ, ๊น์ ๋ณต์ฌ๋ ๋ด๋ถ์ ๊ฐ์ ๋ณต์ฌํ์ฌ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ๊ฒ์ ์๋ฏธํ๋ค. ์์ ๋ณต์ฌ๋ ์ฐธ์กฐ๊ฐ ๋ณต์ฌ์ด๊ธฐ์ ๋ณต์ฌ๋ณธ ๋ณ๊ฒฝ ์ ์๋ณธ์ด ๋ณ๊ฒฝ๋์ง๋ง, ๊น์ ๋ณต์ฌ๋ ์์ ์๋ก์ด ๊ฐ์ฒด์ด๊ธฐ ๋๋ฌธ์ ๋ณต์ฌ๋ณธ ๋ณ๊ฒฝ์๋ ์๋ณธ์ ํผ์๋์ง ์๋๋ค. ๊ฐ์ฒด๋ฅผ ํ๋กํผํฐ ๊ฐ์ผ๋ก ๊ฐ๋ ๊ฐ์ฒด์ ๊ฒฝ์ฐ ์์ ๋ณต์ฌ๋ ํ ๋จ๊ณ๊น์ง๋ง ๋ณต์ฌํ๋ ๊ฒ์ ๋งํ๊ณ ๊น์ ๋ณต์ฌ๋ ๊ฐ์ฒด์ ์ค์ฒฉ๋์ด ์๋ ๊ฐ์ฒด๊น์ง ๋ชจ๋ ๋ณต์ฌํ๋ ๊ฒ์ ์๋ฏธํ๋ค. ์์ ๋ณต์ฌ์ ๊น์ ๋ณต์ฌ๋ก ์์ฑ๋ ๊ฐ์ฒด๋ ์๋ณธ๊ณผ๋ ๋ค๋ฅธ ๊ฐ์ฒด๋ค. ์์ ๋ณต์ฌ๋ฅผ ์ํด์๋ Spread Operator ๋๋ Object.assign์ ์ฌ์ฉํ ์ ์์ผ๋ฉฐ, ๊น์ ๋ณต์ฌ๋ฅผ ํ๋ ค๋ฉด ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํ๊ฑฐ๋ JSON ๋ณํ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ถ๋ณ๊ฐ์ธ ๊ธฐ๋ณธํ vs ๊ฐ๋ณ๊ฐ์ธ ์ฐธ์กฐํ ๊ธฐ๋ณธ..