Jieunny์˜ ๋ธ”๋กœ๊ทธ

Section 1. [๊ธฐ์ˆ  ๋ฉด์ ‘] ๋ณธ๋ฌธ

CodeStates/learning contents

Section 1. [๊ธฐ์ˆ  ๋ฉด์ ‘]

Jieunny 2022. 12. 29. 16:19

๐Ÿ“ฃ ๊ธฐ์ˆ  ๋ฉด์ ‘ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์„ ๋ฏธ๋ฆฌ ์ค€๋น„ํ•ด๋ณด์ž.

 

๐Ÿ“Œ HTML

 

โœ”๏ธ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์›๋ฆฌ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ Œ๋”๋ง ์—”์ง„์„ ์‚ฌ์šฉํ•ด์„œ ์š”์†Œ๋“ค์„ ๋ Œ๋”๋งํ•˜๋ฉฐ, ๋ Œ๋”๋ง ์—”์ง„์€ CRP ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

 

โž• CRP๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

โžฐ Critical Rendering Path

โžฐ ๋ฌธ์„œ๋ฅผ ํ™”๋ฉด์— ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ๊ฑฐ์น˜๋Š” ์ผ๋ จ์˜ ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

1๏ธโƒฃ HTML, CSS๋ฅผ ๊ฐ๊ฐ ํŒŒ์‹ฑ ํ›„ DOM Tree์™€ CSSOM Tree๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , js๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ DOM Tree์™€ CSSOM Tree๋ฅผ ๊ฒฐํ•ฉํ•ด ๋ Œ๋”ํŠธ๋ฆฌ๋ฅผ ๊ตฌ์ถ•ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ ๋ Œ๋”ํŠธ๋ฆฌ์˜ ๊ฐ ๋…ธ๋“œ๊ฐ€ ๊ฐ€์ง€๋Š” ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. (Layout ๋‹จ๊ณ„)

4๏ธโƒฃ ๊ณ„์‚ฐํ•œ ์œ„์น˜์™€ ํฌ๊ธฐ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ”ฝ์…€๋กœ ๋ณ€ํ™˜ํ•ด ํ™”๋ฉด์— ๊ทธ๋ฆฝ๋‹ˆ๋‹ค. (Paint ๋‹จ๊ณ„)

 

โž• ํŒŒ์‹ฑ์ด ๋ฌด์—‡์ธ๊ฐ€? 

โžฐ ๋ฌธ์„œ์˜ ๋‚ด์šฉ์„ ํ† ํฐ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ , ์ด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ DOM Tree, CSSOM Tree๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

 

โž• DOM Tree๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”?

โžฐ ์›น ํŽ˜์ด์ง€์˜ ์š”์†Œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ด๋“ค์„ ์ž˜ ๋ฐ˜์˜ํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

โžฐ DOM์€ ํŠธ๋ฆฌ ์ž๋ฃŒ๊ตฌ์กฐ ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ฌธ์„œ๋ฅผ ์ฝ์–ด๋“ค์ด๊ณ  ์ œ์–ดํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค.

 

โž• ๋ Œ๋”๋ง์ด ๋ฌด์—‡์ธ๊ฐ€?

โžฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๋“ค์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ Œ๋”๋ง ์—”์ง„์„ ํ†ตํ•ด ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค.

โžฐ DOM Tree์™€ CSSOM Tree๋ฅผ ์ด์šฉํ•ด Render Tree๋ฅผ ์ƒ์„ฑ, ์ด๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

 

โž• ๋ Œ๋”ํŠธ๋ฆฌ๋Š” ๋ฌด์—‡์ธ๊ฐ€?

โžฐ DOM Tree + CSSOM Tree์˜ ๊ฒฐํ•ฉ์œผ๋กœ, ์›น ํŽ˜์ด์ง€์— ๋‚˜ํƒ€๋‚  ์š”์†Œ๋“ค์˜ ์œ„์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐Ÿšจ ์ด๋•Œ, display: none ๊ณผ ๊ฐ™์€ ์†์„ฑ์€ ๋ Œ๋”ํŠธ๋ฆฌ๋กœ ๊ตฌ์ถ•๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

 

โœ”๏ธ Reflow์™€ Repaint๊ฐ€ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์— ๋Œ€ํ•ด ๋ง์”€ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ Reflow๋Š” ์—˜๋ฆฌ๋จผํŠธ ๋ณ€๊ฒฝ, CSS๋ณ€๊ฒฝ, ์œ ์ € ํ–‰๋™(hover, ํ…์ŠคํŠธ์ž…๋ ฅ, ์ฐฝ ํฌ๊ธฐ ๋ณ€๊ฒฝ) ๋“ฑ์— ์˜ํ•ด ํŠธ๋ฆฌ๊ฑฐ ๋ฉ๋‹ˆ๋‹ค.

โžฐ Repaint๋Š” Reflow ๊ณผ์ •์ด ๋๋‚œ ํ›„ ๋˜๋Š” ์—˜๋ฆฌ๋จผํŠธ์˜ ๊ฐ€์‹œ์„ฑ์— ๋ณ€ํ™”๊ฐ€ ์žˆ์ง€๋งŒ ๋ ˆ์ด์•„์›ƒ์—๋Š” ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์„ ๋•Œ ํŠธ๋ฆฌ๊ฑฐ ๋ฉ๋‹ˆ๋‹ค.

 

โž• Reflow ๋ž€?

โžฐ ์ƒ์„ฑ๋œ DOM ๋…ธ๋“œ์˜ ๋ ˆ์ด์•„์›ƒ ์ˆ˜์น˜ ๋ณ€๊ฒฝ ์‹œ ์˜ํ–ฅ ๋ฐ›์€ ๋ชจ๋“  ๋…ธ๋“œ์˜ ์ˆ˜์น˜๋ฅผ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์—ฌ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ์žฌ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

โžฐ Reflow๋งŒ ์ผ์–ด๋‚˜๋ฉด ์‹ค์ œ ํ™”๋ฉด์— ๋ฐ˜์˜๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

โž• Repaint ๋ž€?

โžฐ Reflow ๊ณผ์ •์ด ๋๋‚œ ํ›„ ์žฌ์ƒ์„ฑ๋œ ๋ Œ๋” ํŠธ๋ฆฌ๋ฅผ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.

โžฐ Repaint ๊ณผ์ •๊นŒ์ง€ ๊ฑฐ์ณ์•ผ ์‹ค์ œ ํ™”๋ฉด์— ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

 

 

โœ๏ธ โœ”๏ธ CSS๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด <link> ์š”์†Œ๋ฅผ <head> ์š”์†Œ์˜ ์ž์‹ ์š”์†Œ๋กœ ํ•˜๊ณ , JS๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ ์œ„ํ•ด <script> ์š”์†Œ๋ฅผ <body> ์š”์†Œ๊ฐ€ ๋๋‚˜๊ธฐ ์ง์ „์— ์œ„์น˜์‹œํ‚ค๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

โžฐ ๋ Œ๋”๋ง์ด ์ œ๋Œ€๋กœ ์ด๋ฃจ์–ด์ง€๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

โžฐ ํŒŒ์‹ฑ ๊ณผ์ •์—์„œ DOM Tree๊ฐ€ ์ƒ์„ฑ๋˜๋„ CSSOM Tree๊ฐ€ ์—†์œผ๋ฉด ๋ Œ๋”๋ง์ด ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ธฐ CSS ํŒŒ์ผ์„ ์ฝ์–ด์™€ ๋ Œ๋”๋ง์„ ์™„์„ฑํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. <head> ์— ๋‘์–ด์•ผ ํ™”๋ฉด์„ ์œ ์ €์—๊ฒŒ ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ ๋งŒ์•ฝ <script>๊ฐ€ <head> ์•ˆ์— ์žˆ๋‹ค๋ฉด ํŒŒ์‹ฑ ๊ณผ์ •์—์„œ <script>๋ฅผ ๋งŒ๋‚˜๋ฉด ํŒŒ์‹ฑ์„ ๋ฉˆ์ถ”๊ณ  <script> ํŒŒ์ผ์„ ์ฝ์Šต๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์ด ๋ Œ๋”๋ง์— ๋ฐฉํ•ด๊ฐ€ ๋˜์–ด ์‚ฌ์šฉ์ž ์ž…์žฅ์—์„œ ์›นํŽ˜์ด์ง€๊ฐ€ ๋Š๋ฆฌ๊ฒŒ ๋ณด์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

โž• ๋ Œ๋”๋ง์ด ๋ฌด์—‡์ธ๊ฐ€?

โžฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฌธ์„œ๋“ค์„ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋ Œ๋”๋ง ์—”์ง„์„ ํ†ตํ•ด ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๋™์ž‘์ž…๋‹ˆ๋‹ค.

โžฐ DOM Tree์™€ CSSOM Tree๋ฅผ ์ด์šฉํ•ด Render Tree๋ฅผ ์ƒ์„ฑ, ์ด๋ฅผ ๋ฐฐ์น˜ํ•˜๊ณ  ๊ทธ๋ฆฝ๋‹ˆ๋‹ค.

 

 

โœ”๏ธ <li> ์š”์†Œ๋Š” ์™œ <ul> ์š”์†Œ์˜ ์ž์‹ ์š”์†Œ์—ฌ์•ผ๋งŒ ํ•˜๋‚˜์š”?

๋”๋ณด๊ธฐ

โžฐ ์˜๋ฏธ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

โžฐ ํ™”๋ฉด์ƒ์œผ๋กœ๋Š” ์ฐจ์ด๊ฐ€ ์—†์ง€๋งŒ <ul>์•ˆ์— <li>๋ฅผ ์“ฐ๊ฒŒ๋˜๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ดค์„ ๋•Œ๋„ ๋ชฉ๋ก๊ณผ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์‰ฝ๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

โœ”๏ธ id ์†์„ฑ๊ณผ class ์†์„ฑ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ id๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์„œ์— ํ•œ ์š”์†Œ์—๋งŒ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๊ณ , class๋Š” ์—ฌ๋Ÿฌ ์š”์†Œ์— ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

โžฐ id๋Š” ๊ฐœ๋ณ„ ์Šคํƒ€์ผ ์ง€์ •์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๊ณ , class๋Š” ์Šคํƒ€์ผ์˜ ๋ถ„๋ฅ˜๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ“Œ CSS

 

โœ๏ธ โœ”๏ธ CSS box model์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ๋ชจ๋“  HTML ์š”์†Œ๋Š” ๋ฐ•์Šค๋ชจ์–‘์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ ์ด๋ฅผ ๋ฐ•์Šค ๋ชจ๋ธ์ด๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

โžฐ ๋ฐ•์Šค ๋ชจ๋ธ์€ HTML ์š”์†Œ๋ฅผ content, padding, border, margin ์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

 

 

โœ”๏ธ ๊ฐ„๋‹จํ•œ ๋กœ๊ทธ์ธ ํผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐ€์šด๋ฐ ์œ„์น˜์‹œํ‚ค๋ ค๋ฉด CSS๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋‚˜์š”?(centering)

๋”๋ณด๊ธฐ

โžฐ Flexbox๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

โžฐ ๋กœ๊ทธ์ธ ํผ ์ปดํฌ๋„ŒํŠธ์˜ ๋ถ€๋ชจ ์š”์†Œ์— display: flex, justify-content: center, align-items: center ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

 

 

โœ”๏ธ ๊ฐ„๋‹จํ•œ ๋ธ”๋กœ๊ทธ์—์„œ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด CSS๋ฅผ ์–ด๋–ป๊ฒŒ ์ž‘์„ฑํ•ด์•ผ ํ•˜๋‚˜์š”?

๋”๋ณด๊ธฐ

โžฐ Flexbox๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

โžฐ author-container ์š”์†Œ์— display: flex, flex-direction: row ์†์„ฑ์„ ์ค๋‹ˆ๋‹ค.

 

 

โœ”๏ธ CSS์—์„œ margin๊ณผ padding์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ margin์€ border๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฐ”๊นฅ์ชฝ ์—ฌ๋ฐฑ์„ ๋งํ•˜๊ณ , padding์€ ์•ˆ์ชฝ ์—ฌ๋ฐฑ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

 

โœ”๏ธ CSS์—์„œ position์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ position ์†์„ฑ์€ ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

โžฐ static, relative, absolute, fixed, sticky ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โž• position ์†์„ฑ ์ข…๋ฅ˜

1๏ธโƒฃ static : ์š”์†Œ๋ฅผ ์ผ๋ฐ˜์ ์€ ๋ฌธ์„œ ํ๋ฆ„๋Œ€๋กœ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

2๏ธโƒฃ relative : static์„ ๊ธฐ์ค€์œผ๋กœ top, bottom, left, right ๊ฐ’ ๋งŒํผ ๋–จ์–ด์ ธ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

3๏ธโƒฃ absolute : ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์œ„์น˜ ์ง€์ • ์š”์†Œ(position์ด static์ด ์•„๋‹Œ)๋ฅผ ๊ธฐ์ค€์œผ๋กœ top, bottom, left, right ๊ฐ’ ๋งŒํผ ๋–จ์–ด์ ธ ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

4๏ธโƒฃ fixed : ์š”์†Œ๋ฅผ ๋ทฐํฌํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ top, bottom, left, right ๊ฐ’ ๋งŒํผ ๋–จ์–ด์ ธ ๋ฐฐ์น˜ํ•˜๋ฉฐ, ์Šคํฌ๋กค์„ ํ•˜๋”๋ผ๋„ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

5๏ธโƒฃ sticky : ํ‰์†Œ์—๋Š” static๊ณผ ๊ฐ™์€ ์ผ๋ฐ˜์ ์€ ํ๋ฆ„์„ ๋”ฐ๋ฅด์ง€๋งŒ, ์„ค์ •๋œ ์œ„์น˜๊ฐ€ ๋‹ค๋‹ค๋ฅด๋ฉด fixed ์ฒ˜๋Ÿผ ๋ฐฐ์น˜๋˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.

 

โž• ๋ทฐํฌํŠธ๋ž€?

โžฐ ํ˜„์žฌ ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๊ณ  ์žˆ๋Š” ์˜์—ญ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

โžฐ ๋ทฐํฌํŠธ ๋ฐ”๊นฅ์˜ ์ฝ˜ํ…์ธ ๋Š” ์Šคํฌ๋กค ํ•˜๊ธฐ ์ „์—” ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


๐Ÿ“Œ JavaScript

 

โœ”๏ธ ์Šค์ฝ”ํ”„์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

โžฐ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„, ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„, ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„, ๋™์  ์Šค์ฝ”ํ”„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

โžฐ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ํ•˜์œ„ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

 

 

โœ๏ธ โœ”๏ธ ๋ฐฐ์—ด, ๊ฐ์ฒด๋ฅผ const๋กœ ์„ ์–ธํ–ˆ๋Š”๋ฐ ์š”์†Œ๋‚˜ ์†์„ฑ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ์ฐธ์กฐ ์ž๋ฃŒํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ’ ์ž์ฒด๊ฐ€ ์•„๋‹Œ ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

โžฐ stack์—๋Š” ์ฃผ์†Œ๊ฐ€, heap์—๋Š” ์‹ค์ œ ๋ฐฐ์—ด ์š”์†Œ๋“ค์ด ์ €์žฅ๋˜์–ด ์žˆ๋Š”๋ฐ ์‹ค์ œ ๋ฐฐ์—ด ์š”์†Œ๋“ค์„ ๋ณ€๊ฒฝํ•ด๋„ ์ฃผ์†Œ๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 

 

 

โœ”๏ธ ์›์‹œ ์ž๋ฃŒํ˜•๊ณผ ์ฐธ์กฐ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ์›์‹œ ์ž๋ฃŒํ˜•์€ ๊ณ ์ •๋œ ์ €์žฅ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๊ณ , ์ฐธ์กฐ ์ž๋ฃŒํ˜•์˜ ์ €์žฅ ๊ณต๊ฐ„์€ ๋™์ ์ž…๋‹ˆ๋‹ค.

โžฐ ์›์‹œ ์ž๋ฃŒํ˜•์—๋Š” number, boolean, string ๋“ฑ์ด ์žˆ๊ณ  ์ฐธ์กฐ ์ž๋ฃŒํ˜•์—๋Š” ๋ฐฐ์—ด,๊ฐ์ฒด,ํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. 

โžฐ ์›์‹œ ์ž๋ฃŒํ˜•์€ stack์— ๊ฐ’์„ ์ €์žฅํ•˜๊ณ , ์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ heap์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

 

โœ”๏ธ ์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ์–•์€ ๋ณต์‚ฌ๋Š” ์ฃผ์†Œ ๊ฐ’์„ ๋ณต์‚ฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ด๊ณ , ๊นŠ์€ ๋ณต์‚ฌ๋Š” ์‹ค์ œ ๊ฐ’์„ ๋ณต์‚ฌํ•œ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

 

์–•์€ ๋ณต์‚ฌ ๊นŠ์€ ๋ณต์‚ฌ
์•„์ฃผ ์ตœ์†Œํ•œ๋งŒ ๋ณต์‚ฌ ๋ฐ์ดํ„ฐ ์ž์ฒด๋ฅผ ํ†ต์งธ๋กœ ๋ณต์‚ฌ
์ธ์Šคํ„ด์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ƒˆ๋กœ ์ƒ์„ฑ๋˜์ง€ ์•Š์Œ
(ํ•˜๋‚˜ ๋ฐ”๊พธ๋ฉด ๋‚˜๋จธ์ง€ ํ•˜๋‚˜๋„ ๋ฐ”๋€œ)
๋ณต์‚ฌ๋œ ๋‘ ๊ฐ์ฒด๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ฐจ์ง€(ํ•˜๋‚˜ ๋ฐ”๊ฟ”๋„ ํ•˜๋‚˜ ์•ˆ๋ฐ”๋€œ)
์ฐธ์กฐ ์ž๋ฃŒํ˜• ์›์‹œ ์ž๋ฃŒํ˜•

โžฐ copy() ๋ฉ”์†Œ๋“œ๋Š” ์ฐธ์กฐ ์ž๋ฃŒํ˜•๋„ ๊นŠ์€ ๋ณต์‚ฌ

๐Ÿšจ ์ฐธ์กฐ ์ž๋ฃŒํ˜• ๋‚ด๋ถ€์— ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ

โžฐ ์™ธ๋ถ€ ์ž๋ฃŒํ˜•์„ copy()๋กœ ๊นŠ์€ ๋ณต์‚ฌ๋ฅผ ํ•ด๋„ ๋‚ด๋ถ€ ์ž๋ฃŒํ˜•์€ ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

(์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๋ณต์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.)

 

๐Ÿšจ ์›์‹œ ์ž๋ฃŒํ˜• ๋‚ด๋ถ€์— ์ฐธ์กฐ ์ž๋ฃŒํ˜•์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ

โžฐ ์›์‹œ ์ž๋ฃŒํ˜•์€ ๊นŠ์€ ๋ณต์‚ฌ, ์ฐธ์กฐ ์ž๋ฃŒํ˜•์€ ์–•์€ ๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚œ๋‹ค.

 

 

โœ”๏ธ ํ˜ธ์ด์ŠคํŒ…์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๊ธฐ ์ „ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์„ ์–ธ๋ฌธ์˜ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง€๋Š” ๊ฒƒ ๊ฐ™์€ ํ˜„์ƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

โžฐ ๋•Œ๋ฌธ์— var ๋ณ€์ˆ˜ ์„ ์–ธ, ํ•จ์ˆ˜์„ ์–ธ๋ฌธ์€ ์„ ์–ธ๋ณด๋‹ค ํ˜ธ์ถœ์ด ๋จผ์ € ๋‚˜์™€๋„ ์—๋Ÿฌ๊ฐ€ ๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

โž• ์ถ”๊ฐ€ ์„ค๋ช…

โžฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ฝ”๋“ค๋ฅด ์‹คํ–‰ํ•˜๊ธฐ ์ „, ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ํ˜•์ƒํ™”ํ•˜๊ณ  ๊ตฌ๋ถ„ํ•˜๋Š” '์‹คํ–‰ ์ปจํ…์ŠคํŠธ ํ˜•์„ฑ' ๊ณผ์ •์„ ๊ฑฐ์นฉ๋‹ˆ๋‹ค.

์ด ๊ณผ์ •์—์„œ ๋ชจ๋“  ๋ณ€์ˆ˜(var, let, const, function, class) ์„ ์–ธ์ด ๋ณ€์ˆ˜ ๊ฐ์ฒด ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

์ฝ”๋“œ ์‹คํ–‰ ์ „ ์ด๋ฏธ ์„ ์–ธ์ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ์–ธ๋ฌธ๋ณด๋‹ค ์ฐธ์กฐ ๋ฐ ํ˜ธ์ถœ์ด ๋จผ์ € ๋‚˜์™€๋„ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โž• ๋ณ€์ˆ˜์˜ ์ƒ์„ฑ ๋‹จ๊ณ„?

1๏ธโƒฃ ์„ ์–ธ ๋‹จ๊ณ„ : ๋ณ€์ˆ˜๋ฅผ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€์ˆ˜ ๊ฐ์ฒด์— ๋“ฑ๋กํ•˜๋Š” ๋‹จ๊ณ„

2๏ธโƒฃ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ : ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ์กด์žฌํ•˜๋Š” ๋ณ€์ˆ˜ ๊ฐ์ฒด์— ์„ ์–ธ ๋‹จ๊ณ„์—์„œ ์ƒ์„ฑํ•œ ๋ณ€์ˆ˜๋ฅผ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋งŒ๋“œ๋Š” ๋‹จ๊ณ„

(์ด ๋‹จ๊ณ„์—์„œ ํ• ๋‹น๋œ ๋ฉ”๋ชจ๋ฆฌ์— undefined๋ฅผ ํ• ๋‹นํ•œ๋‹ค.)

3๏ธโƒฃ ํ• ๋‹น ๋‹จ๊ณ„ : ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„์—์„œ undefined์œผ๋กœ ์ดˆ๊ธฐํ™” ๋œ ๋ฉ”๋ชจ๋ฆฌ์— ๋‹ค๋ฅธ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๋‹จ๊ณ„

 

โž• ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ž€?

โžฐ ์‹คํ–‰ํ•  ์ฝ”๋“œ์— ์ œ๊ณตํ•  ํ™˜๊ฒฝ ์ •๋ณด๋“ค์„ ๋ชจ์•„๋†“์€ ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค.

 

โž• var ๋ณ€์ˆ˜๋Š” ์™œ ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜๋Š”๊ฐ€?

โžฐ ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋™์‹œ์— ์ง„ํ–‰๋˜์„œ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ณ€์ˆ˜ ๊ฐ์ฒด์— ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋™์‹œ์— undefined์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

โž• let ๋ณ€์ˆ˜๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์ธ๊ฐ€?

โžฐ ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

โžฐ ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๊ฐ€ ๋ถ„๋ฆฌ๋˜์–ด ์ง„ํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ณ€์ˆ˜ ๊ฐ์ฒด์— ๋ณ€์ˆ˜๊ฐ€ ๋“ฑ๋ก๋งŒ ๋˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜์ง€ ์•Š์•„ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•ด ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

โž• ํ•จ์ˆ˜ํ‘œํ˜„์‹์€ ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜์ง€ ์•Š๋Š” ๊ฒƒ์ธ๊ฐ€?

โžฐ ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

โžฐ ํ•จ์ˆ˜ํ‘œํ˜„์‹์€ ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋Š” ํ˜•ํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ์‚ฌ๋ก€๋กœ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ undefined์œผ๋กœ ์ดˆ๊ธฐํ™”๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋กœ ์ธ์‹๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

 

โœ”๏ธ ํด๋กœ์ €์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์–ดํœ˜์  ํ™˜๊ฒฝ์˜ ์กฐํ•ฉ์ž…๋‹ˆ๋‹ค.

 

โž• ์–ดํœ˜์  ํ™˜๊ฒฝ์ด๋ž€?

โžฐ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์ฃผ๋ณ€ ํ™˜๊ฒฝ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๊ฐ€ ๋‚ด๋ถ€ ํ•จ์ˆ˜์˜ ์–ดํœ˜์  ํ™˜๊ฒฝ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. 

โžฐ ๋–„๋ฌธ์— ์™ธ๋ถ€ ํ•จ์ˆ˜๊ฐ€ ๋ฆฌํ„ด ๋˜์–ด๋„ ๋‚ด๋ถ€ ํ•จ์ˆ˜์— ์ ‘๊ทผํ•˜์—ฌ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โž• ํด๋กœ์ €๋ฅผ ์–ธ์ œ ์‚ฌ์šฉํ•˜๋‚˜์š”?

โžฐ private ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

โžฐ ํด๋กœ์ € ๋‚ด์— ์žˆ๋Š” ๋ณ€์ˆ˜๋Š” ์™ธ๋ถ€์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํด๋กœ์ € ๋‚ด์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ํ™œ์šฉ ํ•  ์ˆ˜ ์žˆ๋Š” private ๋ฉ”์„œ๋“œ๋งŒ ๋”ฐ๋กœ ๋…ธ์ถœ์‹œ์ผœ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

 

 

โœ”๏ธ this์˜ ์šฉ๋ฒ•์— ๋Œ€ํ•ด ์•„๋Š”๋Œ€๋กœ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ this๋Š” ํ˜ธ์ถœ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•ฉ๋‹ˆ๋‹ค.

โžฐ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ this์˜ ๋ฐ”์ธ๋”ฉ์ด ์ผ์–ด๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

โž• ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์— ๋”ฐ๋ฅธ this ๋ฐ”์ธ๋”ฉ

1๏ธโƒฃ ํ•จ์ˆ˜ ํ˜ธ์ถœ : ์ „์—ญ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ ๋ฉ๋‹ˆ๋‹ค. (๊ธฐ๋ณธ ๋ฐ”์ธ๋”ฉ)

const foo = function(){
  console.log(this);
}

foo(); // window

 

 2๏ธโƒฃ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ(ํ•จ์ˆ˜๊ฐ€ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋กœ ํ˜ธ์ถœ๋˜๋Š” ์ƒํ™ฉ) : ํ•ด๋‹น ๋ฉ”์†Œ๋“œ๋ฅผ ์†Œ์œ ํ•œ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ ๋ฉ๋‹ˆ๋‹ค. (์•”์‹œ์  ๋ฐ”์ธ๋”ฉ)

var person = {
  name: 'Lee',
  printName: function() {
    console.log(this.name);
  }
}

person.printName() // Lee

 

3๏ธโƒฃ call(), apply(), bind() ํ˜ธ์ถœ : ๋‚ด๊ฐ€ ๋ช…์‹œํ•œ ๊ฐ์ฒด์— ๋ฐ”์ธ๋”ฉ ๋ฉ๋‹ˆ๋‹ค. (๋ช…์‹œ์  ๋ฐ”์ธ๋”ฉ)

const foo = {
  a: 20,
}

function bar() {
  console.log(this.a);
}

bar.call(foo); // 20
bar.apply(foo); // 20

โžฐ bar ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ๋•Œ์˜ this ์ปจํ…์ŠคํŠธ๋ฅผ foo๋กœ ์ง์ ‘ ๋ฐ”์ธ๋”ฉ ํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

 

const foo = {
  a: 20,
}

function bar() {
  console.log(this.a);
}

const bound = bar.bind(foo)

bound(); // 20

โžฐ bind ๋ฉ”์„œ๋“œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ์˜ค๋ธŒ์ ํŠธ๋กœ this๊ฐ€ ๋ฐ”์ธ๋”ฉ๋œ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

4๏ธโƒฃ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ : ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•˜๋Š” ์‹œ์ ์˜ ์ปจํ…์ŠคํŠธ ๊ฐ์ฒด๊ฐ€ this์— ๋ฐ”์ธ๋”ฉ ๋ฉ๋‹ˆ๋‹ค.

const foo = {
  a: 20,
  bar: function () {
    setTimeout(() => {
      console.log(this.a);
    }, 1);
  }
}

foo.bar(); // 20

 โžฐ setTimeout์˜ ์ฝœ๋ฐฑ์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ์„ ์–ธ์‹œ์— this๋Š” foo ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—(lexical scope), ์ฝœ๋ฐฑ์ด ์‹คํ–‰๋  ๋•Œ this๋Š” foo๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

โž• ๋ฐ”์ธ๋”ฉ์ด๋ž€?

โžฐ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉ๋œ ๊ตฌ์„ฑ ์š”์„œ์˜ ๊ตฌ์ฒด์ ์ธ ๊ฐ’์„ ํ™•์ •ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

โž• call(), apply(), bind() ?

โžฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  function ์€ call, apply, bind๋ผ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

โž• ํ”„๋กœํ† ํƒ€์ž…์ด๋ž€?

โžฐ ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด์˜ ๋‚ด์šฉ ๋ณต์‚ฌ ์—†์ด๋„ ์ƒ์†์˜ ํšจ๊ณผ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

 

 

โœ”๏ธ JavaScript๋Š” ์–ด๋–ค ์–ธ์–ด์ธ๊ฐ€์š”?

๋”๋ณด๊ธฐ

โžฐ ์›น ํŽ˜์ด์ง€์—์„œ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด ์ž…๋‹ˆ๋‹ค.

โžฐ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ์ด๋ฉด์„œ ๋…ผ ๋ธ”๋กํ‚น ์–ธ์–ด ์ž…๋‹ˆ๋‹ค.

 

โž• ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๊ฐ€ ๋ฌด์—‡์ธ๊ฐ€?

โžฐ ์Šค๋ ˆ๋“œ๊ฐ€ ํ•˜๋‚˜๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š์•„ ํ•œ๋ฒˆ์— ํ•˜๋‚˜์˜ ์ž‘์—…๋งŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โž• ๋…ผ ๋ธ”๋กํ‚น์ด ๋ฌด์—‡์ธ๊ฐ€?

โžฐ ์ถ”๊ฐ€์ ์ธ JS ์‹คํ–‰์„ ์œ„ํ•ด JS๊ฐ€ ์•„๋‹Œ ์ž‘์—…์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์•„๋„ ๋˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

โž• ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

โžฐ ํŠน์ • ๋กœ์ง์˜ ์‹คํ–‰์ด ๋๋‚ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์ฃผ์ง€ ์•Š๊ณ  ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ์ฒ˜๋ฆฌ๋ฐฉ์‹ ์ž…๋‹ˆ๋‹ค.

 

โž• ๋™๊ธฐ์  ์ฒ˜๋ฆฌ๋ž€?

โžฐ ๋จผ์ € ์‹œ์ž‘๋œ ์ผ์ด ๋ฐ˜ํ™˜๋˜์•ผ ๋‹ค์Œ ์ผ์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

 

โž• ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์ธ๋ฐ ์–ด๋–ป๊ฒŒ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•œ๊ฐ€?

โžฐ Web API, Task Queue, Event Loop ๋“ฑ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์— ๊ด€์—ฌํ•˜๋Š” ์š”์†Œ๋“ค ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

 

โœ”๏ธ JavaScript์—์„œ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์ฝ”๋”ฉํ•˜๋Š” ๋ฒ•์„ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ๋กœ ๋™์ž‘ํ•˜๋ฉฐ, ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์ด ๋ณ„๋„๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

โžฐ ๋น„๋™๊ธฐ ํ™˜๊ฒฝ์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ์™ธ๋ถ€์— ์œ„์น˜ํ•˜๋ฉฐ Event loop, Task queue, Job Queue๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

โžฐ setTimeout, Fetch ๋“ฑ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณต๋˜๋Š” API ํ•จ์ˆ˜๋‚˜, Promise, Async๋กœ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

โž• ๊ด€๋ จ ๋‚ด์šฉ ๋ธ”๋กœ๊น…

 

 

 

 

โœ”๏ธ null, undefined, undeclared, NaN ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

1๏ธโƒฃ undefined : ์„ ์–ธ์€ ๋˜์—ˆ์ง€๋งŒ ์•„์ง ํ• ๋‹น์ด ๋˜์ง€ ์•Š์•„ undefined๋กœ ์ดˆ๊ธฐํ™” ๋œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

2๏ธโƒฃ undeclared : ์„ ์–ธ์กฐ์ฐจ ๋˜์ง€ ์•Š์•„์„œ ์ฐธ์กฐ์‹œ์— ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

typeof undeclared ๋Š” undefined ์ž…๋‹ˆ๋‹ค.

3๏ธโƒฃ null : ์„ ์–ธ, ์ดˆ๊ธฐํ™” ํ›„ ๋ณ€์ˆ˜์— null์„ ํ• ๋‹นํ•œ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.

typeof null ์€ object ์ž…๋‹ˆ๋‹ค.

4๏ธโƒฃ NaN : ์ปดํ“จํ„ฐ์—์„œ ์ˆซ์ž๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ž…๋‹ˆ๋‹ค. (Not a Number)


๐Ÿ“Œ DOM

 

โœ”๏ธ innerHTML ๋ฉ”์„œ๋“œ์™€ textContent ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ innerHTML์€ HTMLํƒœ๊ทธ๋„ ๊ฐ™์ด ๊ฐ€์ ธ์˜ค๊ณ , textContent๋Š” ๋งˆํฌ์—… ํƒœ๊ทธ๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž์—ด์„ ๊ฐ€์ ธ์˜จ๋‹ค.

 

๐Ÿšจ innerHTML vs innerText vs textContent

โžฐ innerHTML์€ HTML ํƒœ๊ทธ์š”์†Œ๋“ค๊นŒ์ง€ ๊ฐ€์ ธ์˜จ๋‹ค.

โžฐ innerText๋Š” ํƒœ๊ทธ ๊ฐ’์€ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๊ณ , display: none; ํ•œ ๊ฐ’๋„ ๋ถˆ๋Ÿฌ์˜ค์ง€ ์•Š๋Š”๋‹ค. (๋งˆํฌ์—… ์–ธ์–ด๊ฐ€ ์ ์šฉ๋œ ์ƒํƒœ๋ผ๋Š” ๋œป)

โžฐ textContent ๋Š” ๋งˆํฌ์—… ํƒœ๊ทธ ์ ์šฉ์€ ์ƒ๊ด€์—†์ด ๋ฌธ์ž์—ด์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

 

 

โœ๏ธ โœ”๏ธ event.preventDefault ๋ฉ”์„œ๋“œ๋Š” ์–ธ์ œ, ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

๋”๋ณด๊ธฐ

โžฐ ๊ธฐ๋ณธ์œผ๋กœ ์ •์˜๋œ ์ด๋ฒคํŠธ๋ฅผ ์ž‘๋™ํ•˜์ง€ ๋ชปํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

โžฐ <a>ํƒœ๊ทธ๋‚˜ <submit> ํƒœ๊ทธ ์ฒ˜๋Ÿผ ํŽ˜์ด์ง€ ์ด๋™, ์ƒˆ๋กœ๊ณ ์นจ ๋“ฑ ์ž๋™์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.