2์ฐจ ํ”„๋กœ์ ํŠธ ์ค‘ GoToTop Btn ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ๋Š”๋ฐ, ๋ฉ˜ํ† ๋‹˜์˜ ๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ  ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

Lodash

A modern JavaScript utility library delivering modularity, performance & extras. ๋ชจ๋“ˆํ™”, ์„ฑ๋Šฅ ๋ฐ ๊ธฐํƒ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ lodash_๊ณต์‹๋ฌธ์„œ



โ—‹ throttle vs debounce

debounce์™€ throttle์€ ์ด๋ฒคํŠธ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‹คํ–‰ํ•  ๋•Œ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜์˜ ๋ถˆํ•„์š”ํ•œ ์‹คํ–‰์„ ์ค„์—ฌ์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋ถˆํ•„์š”ํ•œ ์„œ๋ฒ„ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ๋ง‰์„ ์ˆ˜๋„ ์žˆ๊ณ , ๋ถˆํ•„์š”ํ•œ ํ†ต์‹ ์„ ์ค„์ž„๊ณผ ๋™์‹œ์— ํ•„์š” ์—†๋Š” ๋ Œ๋”๋ง ๋˜ํ•œ ๋ง‰์„ ์ˆ˜ ์žˆ์–ด ์ปดํฌ๋„ŒํŠธ์˜ ์„ฑ๋Šฅ ๊ฐœ์„ ์—๋„ ๋„์›€์„ ์ค€๋‹ค.


โ— throttle

  • throttle์€ ์ฝœ๋ฐฑ ํ•จ์ˆ˜(func)๋ฅผ ์ผ์ • ์ฃผ๊ธฐ(wait) ๋‚ด์— ํ•œ ๋ฒˆ๋งŒ ํ˜ธ์ถœํ•œ๋‹ค.
  • ๋ณดํ†ต ์Šคํฌ๋กค, ๋“œ๋ž˜๊ทธ, mousemove ์ด๋ฒคํŠธ ๋“ฑ์— ์‚ฌ์šฉ


โ— debounce

  • debounce๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋๋‚œ ๋’ค์— ์„ค์ •ํ•ด๋‘” ์‹œ๊ฐ„(wait)์ด ์ง€๋‚˜์•ผ ์ฝœ๋ฐฑ(func)์ด ์‹คํ–‰ ๋œ๋‹ค
  • input onChange์—์„œ ์‚ฌ์šฉ(์ž…๋ ฅ ์ด๋ฒคํŠธ๊ฐ€ ๋๋‚œ ๋’ค ์‹คํ–‰)



throttle์˜ ํ™•์‹คํ•œ ์ „/ํ›„ ๋น„๊ต๐Ÿ‘

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

  • ์ ์šฉ์ „

  • ์ ์šฉํ›„



์ •๋ฆฌ!

debounce๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋๋‚  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์‹œ์ž‘๋œ๋‹ค๋Š” ์ , throttle์€ ์ด๋ฒคํŠธ๊ฐ€ ์‹œ์ž‘๋˜๋ฉด ์ผ์ • ์ฃผ๊ธฐ๋กœ ๊ณ„์† ์‹คํ–‰ํ•œ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

์œ„์ฝ”๋“œ ์ดˆ๋ฐ˜์—๋Š” ๊ธฐ๋Šฅ์ด ๊ตฌํ˜„๋˜๊ธฐ๋งŒ ํ•˜๋ฉด ์ด๊ฒŒ ๋˜๋„ค?๋ผ๋ฉฐ ๋งˆ๋ƒฅ ์ข‹์•˜์—ˆ๋Š”๋ฐ, 2์ฐจ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰์ค‘์ธ ์š”์ฆ˜์€, ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๋‹น์—ฐํ•œ๊ฑฐ์ง€! ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์„ฑ๋Šฅ์ ์ธ ๋ถ€๋ถ„์—๋„ ๊ด€์‹ฌ์ด ๋งŽ์•„์กŒ๋‹ค.

์ข‹์€? ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๋‚˜๋ฆ„์˜ ๋ฐฉํ–ฅ์ด ํ•˜๋‚˜์”ฉ ๋ชธ์— ์ƒˆ๊ฒจ์ง€๊ณ  ์žˆ๋Š” ๋“ฏํ•œ.. ๊ธฐ๋ถ„์ ์ธ ๊ธฐ๋ถ„์“ฐโ€ฆ