๐Ÿ’งJS:Callback

hojuneยท2023๋…„ 9์›” 4์ผ
0

Web Development

๋ชฉ๋ก ๋ณด๊ธฐ
18/33

๐Ÿ’งcallback function

์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜ ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ด ํ˜ธ์ถœ ํ•จ์ˆ˜ ๋‚ด์—์„œ 
๋งค๊ฐœ๋ณ€์ˆ˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

๐ŸŒˆforEach

forEach() ๋ฉ”์„œ๋“œ๋Š” ๋ฐฐ์—ด์— ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๋ฉ”์„œ๋“œ๋กœ, ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์ง„ ํ•จ์ˆ˜๋ฅผ
๋ฐฐ์—ด ์š”์†Œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

https://whoyoung90.tistory.com/24
for-in for-of์™€์˜ ์ฐจ์ด์ (์ผ๋‹จ pass)

๐ŸŒˆforEach and map difference

forEach
-์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ  ๊ฐ ์š”์†Œ์— ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ๋‹ค
-๋ฐ˜ํ™˜x
-๋ฐ˜๋ณต๋ฌธ ์ฝ”๋“œ๋ฅผ ์ค„์ด๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

map
-์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ  ๊ฐ ์š”์†Œ์— ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚จ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค
-๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ฐ”๊พผ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

https://velog.io/@limes/Javascript-Array-Method-for-each-%EC%99%80-map%ED%95%A8%EC%88%98%EC%9D%98-%EC%B0%A8%EC%9D%B4
๋ฌธ๋ฒ•์ด๋‚˜ ์ž์„ธํ•œ ์ฐจ์ด์ 

๐ŸŒˆArrow Functions

const add = function(x,y) {
  return x+y; }
์œ„์ฒ˜๋Ÿผ ์“ฐ๋˜๊ฑธ ์•„๋ž˜์ฒ˜๋Ÿผ ์“ธ ์ˆ˜ ์žˆ๋‹ค
const add = (x,y) => {
  return x+y; }
์ธ์ˆ˜๊ฐ€ ์—†์„ ๋•Œ ()๊ด„ํ˜ธ๋Š” ์žˆ์–ด์•ผํ•œ๋‹ค
์ธ์ˆ˜๊ฐ€ 1๊ฐœ์ผ๋•Œ ()๊ด„ํ˜ธ ์‚ฌ์šฉํ•ด๋„๋˜๊ณ  ์•ˆํ•ด๋„๋œ๋‹ค
์ธ์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์ด๋ผ๋ฉด ()๊ด„ํ˜ธ๋Š” ๊ผญ ์‚ฌ์šฉํ•ด์•ผํ•œ๋‹ค

(Implicit Return) ์•”์‹œ์  ๋ฐ˜ํ™˜
return์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋”๋ผ๋„ ํ™”์‚ดํ‘œ ๋’ค์— {} ๋Œ€์‹ ์— ()์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•จ
๊ด„ํ˜ธ ์ž์ฒด๋ฅผ ์ƒ๋žตํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์กด์žฌํ•œ๋‹ค
const movies = [
    {	title: 'Amadeus',
        score: 99 },
    { 	title: 'Stand By Me',
        score: 85 },
    { 	title: 'Parasite',
        score: 95 },
    {	title: 'Alien',
        score: 90 } ]

const newMovies = movies.map(function (movie) {
    return `${movie.title} - ${movie.score / 10}`
 })

// IMPLICIT RETURN ์•”์‹œ์  ๋ฐ˜ํ™˜
const newMovies = movies.map(movie => (
    `${movie.title} - ${movie.score / 10}`
))

This

this๋ฅผ ์ผ๋ฐ˜์ ์ธ ํ•จ์ˆ˜๋ž‘ ์‚ฌ์šฉํ• ๋•Œ ์™€ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ž‘ ์‚ฌ์šฉํ•  ๋•Œ this์˜ ์ฐธ์กฐ๋ฒ”์œ„๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ž‘ ์‚ฌ์šฉํ• ๋•Œ๋Š” this๋Š” ์œˆ๋„์šฐ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฅดํ‚จ๋‹ค(?)
ํ•จ์ˆ˜๊ฐ€ ๋งŒ๋“  ๋ฒ”์œ„์— ์ƒ์†๋˜๋Š” this ํ‚ค์›Œ๋“œ ๊ฐ’๊ณผ ๊ฐ™๋‹ค

๐ŸŒˆsetTimeout and setInterval + clearInterval

setTimeout
์ผ์ • ์‹œ๊ฐ„ํ›„์— ์ž‘๋™
setTimeout(() => {
  console.log("...are you still there?")
},3000)
๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„์ด๊ธฐ ๋•Œ๋ฌธ์— 3์ดˆํ›„์— ์ž‘๋™ํ•œ๋‹ค

setInterval
์ฝœ๋ฐฑ์„ ๋งค ํŠน์ • ๋ฐ€๋ฆฌ ์ดˆ ๋งˆ๋‹ค ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค
const id = setInterval(() => {
  console.log(Math.random())
},2000);
clearInterval(id) ์ž…๋ ฅ์‹œ ์ข…๋ฃŒ ๊ฐ€๋Šฅ

๐Ÿ’งFilter

์š”์†Œ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐฐ์—ด์—์„œ ํ•„ํ„ฐ๋ง์„ ํ•˜๊ฑฐ๋‚˜ ๋ถ€๋ถ„ ์ง‘ํ•ฉ์„ ๋ชจ์•„ ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค

์ฝœ๋ฐฑ์„ ์ „๋‹ฌํ•ด์„œ ์ด ์ฝœ๋ฐฑ์ด ์ฐธ์ด๋‚˜ ๊ฑฐ์ง“์„ ๋ฐ˜ํ™˜ํ•ด์•ผํ•˜๊ฒŒ๋” ํ•ด์•ผํ•œ๋‹ค (๋ถˆ๋ฆฌ์–ธ)

const movies = [
    {
        title: 'Amadeus',
        score: 99,
        year: 1984
    },
    {
        title: 'Sharknado',
        score: 35,
        year: 2013
    },
    {
        title: '13 Going On 30',
        score: 70,
        year: 2004
    }
]

const recentMovies = movies.filter(m => m.year > 2000)

// const goodMovies = movies.filter(m => m.score > 80)
// const goodTitles = goodMovies.map(m => m.title)

//map๊ณผ filter๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉ
movies.filter(m => m.score > 80).map(m => m.title);

๐ŸŒˆSome and Every

๋ถˆ๋ฆฌ์–ธ ๊ฐ’๊ณผ ๊ด€๋ จ๋œ ํ•จ์ˆ˜
every๋Š” ๋ชจ๋“  ์š”์†Œ๊ฐ€ true๊ฐ’์ธ์ง€๋ฅผ 
some์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์š”์†Œ๊ฐ€ true ๊ฐ’์ธ์ง€๋ฅผ ํ™•์ธ

๐ŸŒˆReduce

๋ฐฐ์—ด์„ ๊ฐ€์ ธ๋‹ค๊ฐ€ ์ ์ฐจ ์ค„์—ฌ๊ฐ€๋ฉด์„œ ๋งˆ์ง€๋ง‰์—๋Š” ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๋‚จ๊ธด๋‹ค
๋ฌธ๋ฒ• ๋‘๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š”๋‹ค
accumulator ๋ฐฐ์—ด์„ ๋งํ•˜๋ฉฐ ์ค„์—ฌ๋‚˜๊ฐˆ ๋Œ€์ƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค
currentValue ๊ฐ๊ฐ์˜ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค
ํ™œ์šฉํ•œ๋‹ค๋ฉด ๋ฐฐ์—ด์—์„œ ๊ฐ๊ฐ ์š”์†Œ๋“ค์˜ ํ•ฉ, ๊ณฑ, ์ตœ๋Œ€๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ๋“ฑ๋“ฑ์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋‹ค

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