16.함수 업그레이드(default parameter / arguments) - ES6

Updated:


parameter

  • JS 특징 중 parameter 가 여러개 있을 경우, 보통 다른 언어들은 나중에 호출 할 때, parameter 를 다 써야 하지만, JS 는 하나만 써도 error 가 나지 않습니다.
function sum(a, b, c) {
  console.log(a)
}

sum(3)

image

함수의 default parameter

function sum(a, b = 10) { // b자리에 아무것도 안넣을 경우 10을 넣어주세요 라는 default parameter 설정임
  console.log(a + b) 
}

sum(1, 2) // b 자리에 parameter 를 쓰면 그것이 적용되고 default parameter 는 사용되지 않음  

함수의 arguments

  • 모든 parameter 를 한꺼번에 싸잡아서 다루고 싶은 경우 array 로 감싸주는 변수에 arguments 를 사용하면 됨
function tmp(a, b, c) {
  console.log(arguments) // array 처럼 출력이 됨
  console.log(arguments[0]) 
  console.log(arguments[1]) 
  console.log(arguments[2]) 
}

tmp(1, 2, 3)

image

  • 🔷 arguments 활용: 입력한 parameter 를 전부 console 창에 출력해주는 함수 만들기
function tmp(a, b, c) {
  for (let i = 0; i < arguments.length; i++) { // parameter 의 개수 만큼 반복문을 출력 할 수 있음
    console.log(arguments[i])
  }
}

tmp(2, 3, 4)

image

  • 🔶 arguments 의 단점: a, b, c, d 가 있는데 특정 parameter 만 출력하고 싶다고 하면 (예로 a, c 만) 그러면 arguments 라는 자료를 쪼개고 array 같이 지정해줘야 되서 복잡할 수 있음

Rest parameter

  • 📌 arguments 와 유사 하게 사용할 수 있는 ES6 신 문법 중에 rest parameter 기능이 있습니다.

  • 함수안에 들어온 parameter 를 전부 담은 array을 합니다.

function tmp(a, b, ...rest) { // 실행 함수에서 들어 오는 모든 parameter 들을 arguments 와 같이 array 로 만들어 줌
  console.log(rest) // 1, 2 자리는 a, b 가 차지하고 rest 는 나머지 자리에 있는것을 담아서 출력 함
}

tmp(1, 2, 3, 4, 5, 6, 7)
  • 🔑 차이점

    • arguments : 모든 parameter 를 [] 에 담아 줍니다.

    • rest parameter : 이 자리에 오는 모든 parameter 를 [] 에 잡아 줍니다. parameter 가 몇개 들어올지 미리 지정안해줘도 됩니다

    • … 이 parameter 안에 있는 경우는 : rest parameter

    • … 이 나머지 경우에 있는 경우는 : spread operator

  • 🔷 Q. 모든 parameter 를 하나씩 console 창에 출력해주는 함수 만들기?

function tmp(...rest) {
  for(let x of rest)
  console.log(x)
}

tmp(1, 2, 3, 4)

image

  • 🔶 …rest parameter 사용시 주의점

    • parameter 자리에서 가장 뒤에 써야 합니다.

    • 두번 이상 사용 할 수 없습니다.

연습문제

1.Math.max() 을 사용해서 max 값 구하기

const numbers = [2,3,4,5,6,1,3,2,5,5,4,6,7];

console.log(Math.max(...numbers)) // 출력 값 7

2.글자를 알파벳순으로 정렬해주는 함수를 만들기

function tmp(a) {
  console.log([...a].sort())
}

tmp('bear')

3.단어를 입력하면 알파벳 갯수를 세어주는 함수 만들기

function cnt(a) {
  let arr = ([...a])
  let result = {};
  for (let x of arr) { 
    // 만약 result 에 a 가 있으면 +1 해주고 없으면 a : 1 형태로 출력함
    if (result[x] > 0) {
      result[x] += 1;
    }
    else {
      result[x] = 1;
    }
  }
  console.log(result)
}

cnt('aabbccc')

image

🔶 🔷 📌 🔑

Reference

Leave a comment