Rest Parameter는 함수에 전달되는 여러 개의 값을 하나의 배열로 모아주는 기능.
쉽게 말해, 함수가 얼마나 많은 값을 받을지 모를 때 유용.
... (점 세 개)를 사용합니다.function sum(...numbers) {
// numbers는 배열로 모든 인자를 받음
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // 6
console.log(sum(10, 20, 30, 40)); // 100
함수에 여러 값을 넘겨주면 Rest Parameter가 배열로 묶어서 처리!!
Arrow Function은 간단하게 함수를 작성할 수 있는 방법.
일반적인 함수 선언보다 코드가 짧아지고 간결.
function 대신 => (화살표)를 사용하여 함수 작성.// 일반 함수 선언
const add = function (a, b) {
return a + b;
};
// 화살표 함수로 동일한 기능 작성
const addArrow = (a, b) => a + b;
console.log(add(2, 3)); // 5
console.log(addArrow(2, 3)); // 5
화살표 함수로 한 줄로 작성이 가능:
const greet = (name) => `Hello, ${name}!`;
console.log(greet("Alice")); // Hello, Alice!
=>)로 작성. 예시 1: 객체 안에서 함수 호출
const obj = {
name: "Alice",
sayName: function () {
console.log(this.name); // 'this'는 obj를 가리킴
},
};
obj.sayName(); // 출력: Alice
여기서 this는 obj를 가리켜. 왜냐하면 sayName()을 obj가 호출했기 때문!
예시 2: 그냥 호출하면?
function sayName() {
console.log(this.name); // 'this'는 전역 객체를 가리킴
}
sayName(); // 출력: undefined (브라우저에서는 window.name)
함수가 독립적으로 호출되면, this는 브라우저에서는 window를, Node.js에서는 전역 객체를 가리켜.
Arrow Function은 this를 "고정"시킴
일반 함수는 호출 방식에 따라 this가 바뀌지만, Arrow Function은 this가 작성된 위치의 주인을 사용해.
예시: 일반 함수와 Arrow Function의 차이
const obj = {
name: "Alice",
sayName: function () {
const inner = () => {
console.log(this.name); // Arrow Function은 obj를 그대로 사용
};
inner();
},
};
obj.sayName(); // 출력: Alice
Arrow Function은 "이 함수가 어디에 작성되었는지"만 보고 this를 고정하기 때문에 obj를 가리킨다.