function showName(name) {
	console.log(name);
}

showName('malza');
여기서 만약 인수를 하나 더 넘겨주면?
showName('malza', 'mile'); // error 발생하지 않는다.
showName(); // error 발생하지 않는다. undefined 가 찍힐 뿐이다.
함수의 인수를 얻는 방법은 2가지가 있다.
1. arguments (화살표 함수에는 arguments 가 없다.)
2. 나머지 매개 변수 (요즘 대세)
// arguments
arguments 는 함수로 넘어 온 모든 인수에 접근 할 수 있다.
함수 내에서 이용 가능한 지역변수다.
length / index 를 사용 할 수 있다.
Array 형태의 객체이다.
배열의 내장 메소드는 없다. (forEach, map등)

function showName(name) {
	console.log(arguments.length); // 받은 인수의 개수 (name 뿐만 아니라 뒤에 더 넘겨도 그 개수만큼 출력해준다.)
	console.log(arguments[0]);
	console.log(arguments[1]);
}
// 나머지 매개변수(Rest parameters)
정해지지 않은 개수의 인수를 배열로 나타낼 수 있게 한다.
function showName(...names) {
  console.log(names);
}

showName(); // []
showName("malze", "mike"); // ["malze", "mike"]

function addNum(...numbers) {
  let result = numbers.reduce((prev, cur) => prev + cur, 0);
  console.log(result);
}

addNum(); // 0
addNum(1, 2, 3, 4, 5, 65, 19); // 99
function User(name, age, ...skills) { // 나머지 매개변수는 항상 마지막에 두자
  this.name = name;
  this.age = age;
  this.skills = skills;
}

const [user1, user2, user3] = [
  new User("mike", 30, "html", "css"),
  new User("malze", 20, "html", "css", "c++"),
  new User("jane", 29, "html", "JS", "React"),
];

console.log(user1); // User {name: "mike", age: 30, skills: Array(2)}
console.log(user2); // User {name: "malze", age: 20, skills: Array(3)}
console.log(user3); // User {name: "jane", age: 29, skills: Array(3)}
// 전개 구문
arr1 을 [4, 5, 6, 1, 2, 3] 로 바꿔보자

let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];

arr2.reverse().forEach((num) =>{
	arr1.unshift(num);
});

위의것을 아래처럼 줄일 수 있다.

arr1 = [...arr2, ...arr1]; // [4, 5, 6, 1, 2, 3]