๐Ÿ“ƒ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐ๋ทฐ ๋ฌธ์ œ ๋‹ตํ•ด๋ณด๊ธฐ #4 ์ด๋ฒคํŠธ ์œ„์ž„

Jake Seoยท2020๋…„ 6์›” 4์ผ
2
post-thumbnail

๐Ÿ“ƒ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐ๋ทฐ ๋ฌธ์ œ ๋‹ตํ•ด๋ณด๊ธฐ #4 ์ด๋ฒคํŠธ ์œ„์ž„

Prologue

๊นƒํ—ˆ๋ธŒ๋ฅผ ๋Œ์•„๋‹ค๋‹ˆ๋‹ค๊ฐ€ ์˜ˆ์ „์— ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์ด๋ผ๋Š” ๋ ˆํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณธ์ ์ด ์žˆ๋‹ค. ์‚ฌ์‹ค ๊ทธ ๋‹น์‹œ์—๋Š” ๊ทธ๋ƒฅ ์Šคํƒ€๋งŒ ๋ˆŒ๋Ÿฌ๋†“๊ณ  ํฐ ๊ด€์‹ฌ์ด ์—†์—ˆ์ง€๋งŒ ์ง€๊ธˆ๋ถ€ํ„ฐ ํ•˜๋‚˜์”ฉ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ฌผ๋ก  ๋งŽ์€ ๋‹ต๋“ค์ด ์ด๋ฏธ ์ด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์— ์ž‘์„ฑ๋˜์–ด ์žˆ๊ธด ํ•œ๋ฐ, ์ž‘์„ฑ๋˜์ง€ ์•Š์€ ๊ฒƒ๋“ค๋„ ์žˆ๊ณ  ๋‚ด ๋‹ต์ด๋ž‘ ๋ชจ๋ฒ”๋‹ต์•ˆ์„ ๋น„๊ตํ•˜๋Š” ๊ฒƒ๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์„œ ํ•œ๋ฒˆ ํ’€์–ด๋ณด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ์„ ์ •

๊ธฐ์กด ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—๋Š” ๋ฌธ์ œ์˜ ๋ถ„๋ฅ˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

  1. General Questions
  2. HTML Questions
  3. CSS Questions
  4. JS Questions
  5. Accessibility Questions (external link)
  6. Testing Questions
  7. Performance Questions
  8. Network Questions
  9. Coding Questions
  10. Fun Questions

๋งค์ผ 1๊ฐ€์ง€์”ฉ ๋Œ์•„๊ฐ€๋ฉฐ ํ’€ ๊ฑด๋ฐ, General Questions ํ•ญ๋ชฉ์—์„œ ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋Š” ํ’€์ง€ ์•Š์„ ๊ฒƒ์ด๋‹ค. ๋„ˆ๋ฌด ์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ์˜ ์ •์˜๋Š” ์‚ฌ๋žŒ๋งˆ๋‹ค ๋‹ต์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

์ด๋ฅผํ…Œ๋ฉด...

What did you learn yesterday/this week? (์–ด์ œ/์ด๋ฒˆ์ฃผ์— ๋ฌด์—‡์„ ๋ฐฐ์› ๋‚˜์š”)
What excites or interests you about coding? (๋ฌด์—‡์ด ๋‹น์‹ ์„ ์ฝ”๋”ฉํ•˜๊ณ  ์‹ถ๊ฒŒ ๋งŒ๋“œ๋‚˜์š”?)
What is a recent technical challenge you experienced and how did you solve it?(์ตœ๊ทผ์— ๊ฒช์€ ๊ธฐ์ˆ ์ ์ธ ์–ด๋ ค์›€๊ณผ ๊ทธ๊ฒƒ์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ์„ธ์š”)

์ด๋Ÿฌํ•œ ๊ฒƒ๋“ค์€ ๋‹ต๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋Š” ๊ทธ๋•Œ๊ทธ๋•Œ ๋‹ต์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ 

๋‚˜์˜ ๋‹ต๋ณ€์€ ๋†’์€ ํ™•๋ฅ ๋กœ ํ‹€๋ฆด ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ์•„๋‹ˆ๋ฉด ๋งž๊ฒŒ ๊ฐ€๋‹ค๊ฐ€ ์ค‘๊ฐ„์— ์ด์ƒํ•œ ๊ธธ๋กœ ๋น ์งˆ ์ˆ˜๋„ ์žˆ๋‹ค. ๋Œ“๊ธ€์— ์ž์‹ ๋งŒ์˜ ๋‹ต์„ ์˜ฌ๋ ค์ฃผ๋ฉด ๋งค์šฐ ๊ณ ๋งˆ์šธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Q: ์ด๋ฒคํŠธ ์œ„์ž„์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ฃผ์„ธ์š”.

์›๋ฌธ : Explain event delegation

A: Event ์œ„์ž„์ด๋ž€?

์ด๋ฒคํŠธ ์œ„์ž„์€ ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ ๋Œ€์‹ ์— ๋ถ€๋ชจ ์—˜๋ฆฌ๋จผํŠธ์—๊ฒŒ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ํ…Œํฌ๋‹‰์ž…๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด DOM์—์„œ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์ด ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํด๋ฆญํ–ˆ์„ ๋•Œ, ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์ž‘๋™ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐ๊ฐ์˜ ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ์— ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ํ• ๋‹นํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋‹ˆ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋” ์ ์€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ถ€๋ชจ ์—˜๋ฆฌ๋จผํŠธ์— ์ƒˆ ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ƒ๊ธฐ๊ฑฐ๋‚˜ ๊ธฐ์กด์˜ ์ž์‹ ์—˜๋ฆฌ๋จผํŠธ๊ฐ€ ์ œ๊ฑฐ๋˜๋”๋ผ๋„ ์ด๋ฒคํŠธ์˜ ๋ณ€๊ฒฝ์ด ํ•„์š” ์—†์–ด์ง‘๋‹ˆ๋‹ค.

์ฐธ๊ณ 

์ถ”๊ฐ€) ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง๊ณผ ์บก์ณ๋ง์ด๋ž€?

๋ถ€๋ชจ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ€์ง„ ์—˜๋ฆฌ๋จผํŠธ์—์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋™์ž‘ํ•  ๋•Œ, ํ˜„๋Œ€ ๋ธŒ๋ผ์šฐ์ €๋Š” 2๊ฐ€์ง€ ๋‹ค๋ฅธ ์ ˆ์ฐจ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ์ด๋ฒคํŠธ ์บก์ณ๋ง ๊ณผ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ํด๋ฆญ(onclick)ํ•œ๋‹ค๋ฉด ์ด๋ฒคํŠธ ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ผ์–ด๋‚ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ์บก์ณ๋ง ์ ˆ์ฐจ๋Š”

  • ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๊ฐ€์žฅ ์ƒ์œ„์˜ ์—˜๋ฆฌ๋จผํŠธ์ธ <html> ์—˜๋ฆฌ๋จผํŠธ์— onclick ์ด๋ฒคํŠธ๊ฐ€ ๋“ฑ๋ก๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ๋“ฑ๋ก๋˜์–ด์žˆ์œผ๋ฉด ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ์ดํ›„์— <html> ํƒœ๊ทธ ๋‚ด๋ถ€์—์„œ ํ˜„์žฌ ์„ ํƒํ•œ ์—˜๋ฆฌ๋จผํŠธ๊นŒ์ง€ ๊ฐ™์€ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ์ ˆ์ฐจ๋Š”

  • ํ˜„์žฌ ์—˜๋ฆฌ๋จผํŠธ์— onclick ์ด๋ฒคํŠธ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์ผ ๋“ฑ๋ก๋˜์–ด ์žˆ๋‹ค๋ฉด ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ๋‹ค์Œ์— ์„ ํƒํ•œ ์—˜๋ฆฌ๋จผํŠธ์˜ ๋ฐ”๋กœ ์ƒ์œ„์— ์žˆ๋Š” ์—˜๋ฆฌ๋จผํŠธ์— ๊ฐ™์€ ์ž‘์—…์„ ํ•˜๊ณ  ์ตœ์ƒ์œ„ <html>ํƒœ๊ทธ๊นŒ์ง€ ๊ฐ™์€ ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„๋Œ€ ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๊ธฐ๋ณธ๊ฐ’์œผ๋กœ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด๊ฒŒ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ ์บก์ณ๋ง, ๋ฒ„๋ธ”๋ง์„ ๋ง‰๊ณ  ์‹ถ๋‹ค๋ฉด,

handler์—์„œ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” argument event์— ๋‚ด์žฅ๋˜์–ด ์žˆ๋Š” stopPropagation() ๋ฉ”์†Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ง‰์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

element.onclick = function someHandler(e) {
  e.stopPropagation();
  // do something;
}

๋ ˆํผ๋Ÿฐ์Šค : https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Building_blocks/Events#Event_bubbling_and_capture

profile
ํ’€์Šคํƒ ์›น๊ฐœ๋ฐœ์ž๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š” Jake Seo์ž…๋‹ˆ๋‹ค. ์ฃผ๋กœ Jake Seo๋ผ๋Š” ๋‹‰๋„ค์ž„์„ ๋งŽ์ด ์”๋‹ˆ๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ: Javascript, React ๋ฐฑ์—”๋“œ: Spring Framework์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

2๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2020๋…„ 6์›” 5์ผ

์–ธ์ œ๋‚˜ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

1๊ฐœ์˜ ๋‹ต๊ธ€