Plant seed
article thumbnail

Q. ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์ฝ”๋“œ๋ฆฌ๋ทฐ๋ฅผ ํ•ด์ฃผ์…จ๋Š”๋ฐ addEventListener๋ฅผ ์ž‘์„ฑํ•˜๊ณ  removeEventListener๋ฅผ ํ•ด์ฃผ๋ผ๊ณ  ํ•˜์…จ๋Š”๋ฐ ๋ฉ”๋ชจ๋ฆฌ ๋ฌธ์ œ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ํ•˜์…จ๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ํฐ ์ฐจ์ด๊ฐ€ ์žˆ๋‚˜์š”?

 

A. ํŽ˜์ด์ง€๋‚˜ DOM์„ ์•„์˜ˆ ๋‚˜๊ฐ€๋Š”๊ฑฐ๋ฉด ์ƒ๊ด€์—†๊ณ  SPAํŠน์„ฑ์ด๋ผ์„œ ํ•ด์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค.

๋Œ€์ถฉ SPA๋Š” ํŽ˜์ด์ง€๋ฅผ ๋‚˜๊ฐ€์ง€ ์•Š๊ธฐ๋•Œ๋ฌธ์— ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์Œ“์ด๊ฒŒ๋ผ์„œ ๋‚œ ํ•œ๊ฐ€์ง€ ์ด๋ฒคํŠธ๋งŒ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋˜๋Š”๋ฐ ๋‹ค๋ฅธ ์ด๋ฒคํŠธ๋ฆฌ์Šค๋„ˆ๊ฐ€ ํญ์ฃฝ๋†€์ดํ•˜๋ฉด์„œ ๋‘๋‘ฅํƒ ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋‹ค.

dom๊ณผ event listener๊ฐ€ ์ƒํ˜ธ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ ์‚ญ์ œํ•ด์ฃผ์ง€ ์•Š์œผ๋ฉด ์ƒํ˜ธ ์ฐธ์กฐ๋กœ reference count๊ฐ€ 0์ด ๋˜์ง€ ์•Š์•„์„œ ์˜๊ตฌํžˆ ๋‚จ๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.

addEventListenr(name, function)์„ ํ˜ธ์ถœํ•˜๋ฉด ์‹œ์Šคํ…œ ๋‚ด๋ถ€์— ํ•ด๋‹น ์ด๋ฒคํŠธ ํ˜ธ์ถœ์ด ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ listeners ๋ชฉ๋ก์„ ๋Œ๋ฉด์„œ ์ด๋ฒคํŠธ๋ฅผ ๊ฐ listener์—๊ฒŒ ํˆฌ์‚ฌํ•ด์ค€๋‹ค.
๊ทธ๋ž˜์„œ function์ด ํ˜ธ์ถœ๋˜๋Š” ๊ฑด๋ฐ, ์ด addEventListener๋ฅผ ํ•˜๊ณ  removeEventListener์„ ์•ˆํ•˜๋ฉด internal์— ๊ณ„์† listeners ๋ชฉ๋ก์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋œ๋‹ค
๋งŒ์•ฝ ์ž์ฃผ ์“ฐ์ด๋Š” ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ๋ฉด ์ˆœ์‹๊ฐ„์— listeners ๋ชฉ๋ก์ด ์ฆ๊ฐ€ํ•˜์—ฌ ์„ฑ๋Šฅ ์ €ํ•˜ ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
์ด์— ๋”ฐ๋ผ removeEventListener๋กœ ๋“ฑ๋ก๋œ listener์„ ์‚ญ์ œํ•ด์ค˜์•ผ ํ•œ๋‹ค.

'Front-End > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด  (1) 2023.02.03
ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹จ์ถ• ํ‰๊ฐ€  (0) 2023.01.27
๊ณ ์œ ํ•œ id ์ƒ์„ฑํ•˜๊ธฐ  (0) 2023.01.08
์ œ์–ด๋ฌธ  (1) 2023.01.06
์—ฐ์‚ฐ์ž  (0) 2022.12.30