function 함수이름(매개변수, 인자){결과값 반환;}
function add(a,b){return a+b;}
// 사용예제
function sum(a, b) { // 함수 정의
console.log('function');
return a + b;
}
const result = sum(1, 2); // 함수 호출
function add(a, b) {
return a + b;
}
const sum = add; // add가 가르키고 있는 메모리 주소를 가지게 됨
console.log(sum(1, 2)); // 3
console.log(add(1, 2)); // 3
function print(num) {
if (num < 0) {
return; // 즉시종료
}
console.log(num);
}
print(12);
print(-12);
함수 파라미터(=매개변수)
function add(a = 1, b = 1) { // 매개변수 기본값 a = 1, b = `
console.log(a); // 1
console.log(b); // 2
console.log(arguments); //[Arguments] { '0': 1, '1': 2, '2': 3 }
console.log(arguments[1]); // 2
return a + b;
}
add(1, 2, 3);
나머지 매개변수(Rest Parametres)
function sum(a, b, ...numbers) {
console.log(a); // 1
console.log(b); // 2
console.log(numbers); //[3 , 4, 5, 6, 7, 8]
}
sum(1, 2, 3, 4, 5, 6, 7, 8);
let add = function (a, b) {
return a + b;
};
console.log(add(1, 2));
// 화살표 함수 const name = () => { }
add = (a, b) => a + b;
console.log(add(1, 2));
// 생성자 함수
const object = new Function(); // 뒤 객체편에서 다룸
일급함수 (first-class fucntion)
함수가 일반 객체처럼 모든 연산이 가능한것
고차함수(Higher-oder fucntion)
콜백함수
const add = (a, b) => a + b;
const multiply = (a, b) => a * b;
// 전달된 action은 콜백함수이다.
// 전달될 당시에 함수를 바로 호출해서 반환된 값을 전달하는 것이 아니라
// 함수를 가리키고 있는 함수의 레퍼런스(참조값)가 전달된다.
// 그래서 함수는 고차함수(calculator)안에서 필요한 순간에 호출이 나중에 됨
function calculator(a, b, action) { //
if (a < 0 || b < 0) {
return;
}
let result = action(a, b);
console.log(result);
return result;
}
calculator(1, 1, add);
calculator(1, 2, multiply);
불변성(Immutability)
function display(num) {
num = 5; // ❌
console.log(num);
}
const value = 4;
display(value);
console.log(value);
function displayObj(obj) {
obj.name = 'Bob'; // ❌❌❌❌❌❌ 외부로 부터 주어진 인자(오브젝트)를 내부에서 변경 ❌
console.log(obj);
}
const ellie = { name: 'Ellie' };
displayObj(ellie);
console.log(ellie);
function changeName(obj) {
return { ...obj, name: 'Bob' };
}