가수면

JavaScript 함수 (2) 본문

웹 개발/웹 개발

JavaScript 함수 (2)

니비앙 2022. 11. 12. 17:38

.forEach()

가장 기본적인 콜백 함수. 배열 내부의 요소를 사용해 콜백 함수를 호출

      const numbers = [273, 52, 103, 32, 57]

						# array는 잘 쓰이지 않음
      numbers.forEach(function (value, index, array) {
        console.log(`${index}번째 요소 : ${value}`)
      })

 

.filter()

리턴 값이 true인 것들만 모아서 새로운 배열을 만드는 함수

      # const는 재할당이 안돼서 오류남
      let 배열 = [273, 52, 103, 32, 57]
      배열 = 배열.filter(function (value, index) {
        return value % 2 === 0
      })

      console.log(배열)
      [52, 32]

 

.map()

리턴한 값을 기반으로 새로운 배열을 만드는 함수

      let 배열 = [273, 52, 103, 32, 57]
      배열 = 배열.map(function (value, index) {
        return value + '!!'
      })

      console.log(배열)
      ['273!!', '52!!', '103!!', '32!!', '57!!']

 

화살표 함수

  • 기본형

      let 배열 = [273, 52, 103, 32, 57]
      배열 = 배열.filter(function (value, index) {
        return value % 2 === 0
      })

 

  • 화살표 함수 적용 (빨간 부분 날림, 초록색 추가)

      let 배열 = [273, 52, 103, 32, 57]
      배열 = 배열.filter((value, index) => {
        return value % 2 === 0
      })

 

  • 더 줄이기 (내부에 있는 코드가 return하는 코드 하나라면 중괄호와 return 생략가능)

      let 배열 = [273, 52, 103, 32, 57]
      배열 = 배열.filter((value, index) => value % 2 === 0)

 

 

즉시 호출 함수

협업하다보면 상수나 변수 명이 겹칠 수 있기에 함수를 짜고 그 내부에서 사용할 수 있도록 코드를 짜는 것이 좋음

      (function () {
        const a =10
      }) ()

      (function () {
        const a =20
      }) ()

 

엄격 모드

다른 코드에도 영향 가지 않도록 보통은 즉시 호출 함수에 넣어 사용함

      (function () {
        'use srict'
      }) ()

 

타이머 함수

      setTimeout(() => (
        console.log('1초 후에 실행됩니다.')
      ), 1000)

      let count = 0
      setInterval(() => (
        console.log('1초마다 실행됩니다.')
      ), 1000)

 

선언적 함수 vs 익명 함수

선언적 함수

function 함수() {
	console.log("선언적 함수입니다.")
}

익명함수

let 함수 = function() {
	console.log('익명 함수입니다.')
}

선언적 함수는 호출이 위에 있더라도 선언적 함수 우선 실행 됨, 익명 함수보다 아래 있어도 우선 실행됨. 다른 <script>에서 호출했을 때 실행될 수도 있음 (그럴 일은 없지만 다른 스크립트의 익명함수 전에 호출이 적혀있을 경우)

익명함수는 순서대로 읽힘.(호출이 위에 있으면 오류 발생)

(호이스팅 때문임. 자세한 내용은 블로그 내 'Javascript 기본 개념 추가 (1)' 참조)

 

 


 

문제1. 아래 배열을 다음과 같이 추출하기

  • 홀수만 추출
  • 100 이하의 수만 추출
  • 5로 나눈 나머지가 0인 수만 추출
let numbers = [273, 25, 75, 52, 103, 32, 57, 24, 76]

numbers = numbers.filter((value) => value % 2 !== 0)
console.log(numbers)
numbers = numbers.filter((value) => value <= 100)
console.log(numbers)
numbers = numbers.filter((value) => value % 5 === 0)
console.log(numbers)

return 값으로 3개를 받아와야 하는데 어떻게 해야할까하는 생각에 함수 내부에 let으로 3개 나눠서 적어보기도 하고,  세개를 묶어 리턴 값으로도 돌려보고 여러 짓 해봤었는데 정말 단순하게 따로 세개를 만드는 게 정답 코드였다...

 

문제2. 결과를 아래와 같이 띄우기

0

1

2

3

사과

바나나

 

- 내가 쓴 코드 -

  array.forEach((value, index) => {
    console.log(index)
    console.log(value)
  })

- 정답 코드 -

  let array = ['사과', '배', '귤', '바나나']

  array.forEach(function (value, index) {
    console.log(index)
  })

  array.forEach((value, index) => {
    console.log(value)
  })

이번에도 함수 하나에 썼었는데 '0 사과 1 배' 이런식으로 번갈아 나와서 순서 고치고 식 변형해보고 난리쳤지만 문제1이랑 똑같이그냥 두개를 만들어주면 되는 거였다...

 

 

 

 

 

'웹 개발 > 웹 개발' 카테고리의 다른 글

Javascript 기본 개념 추가 (1)  (0) 2022.11.18
Javascript 기본 개념 추가 (2)  (0) 2022.11.18
JavaScript 함수 (1)  (0) 2022.11.11
JavaScript 반복문  (0) 2022.11.10
JavaScript 조건문  (0) 2022.11.08
Comments