1. 함수 선언문(정의문)
function add(n1, n2) {
return n1 + n2;
}
2. 함수 표현식
;
세미콜론을 붙임// 익명 함수 : 함수를 값(리터럴)으로 본 경우
const multiply = function(n1 ,n2) {
return n1 * n2;
};
function add(n1, n2) {
return n1 + n2;
}
const r1 = add(10, 30);
console.log(`r1: ${r1}`);
const plus = add; // plus라는 변수에 함수를 저장해서 plus로 함수 사용가능
// 함수도 하나의 데이터이고 값이다.
console.log(typeof plus); // function
const r2 = plus(5, 8);
console.log(`r2: ${r2}`);
array[6](7, 9);
이런 형태도 가능array[7](); // 함수여서 ()로 함수 호출!!
const array = [
10, 'zzz', true, [],
{}, add, multiply, function() {console.log('zzz');}
];
const r4 = array[6](7, 9);
console.log(r4);
array[7](); // 함수여서 ()로 함수 호출!!
array[7]();
array[7]();
console.log('===========================');
const dog = {
name: '초코',
age: 3,
favorite: ['산책', '낮잠'],
// 메서드: 객체의 전용함수 (객체의 기능을 표현)
play: function (tool) {
console.log(`${this.name} 강아지는 ${tool} 장난감으로 놀아요~`);
}
};
const cat = {
name: '야옹이',
sleep: function() {
console.log('쿨쿨쿨~~~');
}
}
dog.play('개껌');
const arr = {
0: 'zzz',
1: 'fgsdf',
2: 'dfsdf',
length: 3,
indexOf: function() {},
slice: function () {},
push: function () {},
};
const arr2 = [];
console.log(typeof arr2);
// 함수 선언문 방식
function add(n1, n2) {
return n1 + n2;
}
// 함수 표현식 방식
const add = function(n1, n2) {
return n1 + n2;
};
// 화살표 함수 방식
const add = (n1, n2) => {
return n1 + n2;
};
{}
생략 가능, return 생략 가능// 동일
const pow = (n) => {
return n**2;
}
// 중괄호, return, 소괄호 생략
const pow = n => n**2;
// 2. param에 이름이 없는 함수가 들어감
function operate(param) {
// console.log(`param: ${param}`);
// console.log('계산기 작동!!');
// 3. param에 들어간 이름이 없는 함수의 파라미터들을 활용하여 대입
const result = param(10, 20);
return result;
}
// 1. operate 호출 -> 이름이 없는 함수 전달
const result = operate(function(n1, n2) {
return n1 - n2; // 내 입맛대로 커스텀 가능
}
);
console.log(`result: ${result}`);
const userList = [
{
account: "abc1234",
userName: "대길이",
job: "추노",
address: "서울",
hobbys: ["수영", "축구", "테니스"],
salary: 5400000,
age: 35,
},
{
account: "banana",
userName: "빠나나",
job: "과일",
address: "서울",
hobbys: ["푸드파이팅", "테니스"],
salary: 2700000,
age: 18,
},
{
account: "park1234",
userName: "주차왕",
job: "발렛파킹",
address: "경기",
hobbys: ["족구", "축구", "테니스", "영화감상"],
salary: 3900000,
age: 56,
},
{
account: "fire",
userName: "불꽃남자카리스마",
job: "게이머",
address: "서울",
hobbys: ["독서", "테니스"],
salary: 7900000,
age: 42,
},
];
// 조건을 콜백함수해서 필터링하는 함수
function filter(array, condition) {
const filteredArray = []; // 필터링된 회원들을 다시 담을 배열
for (const user of array) {
if (condition(user)) {
filteredArray.push(user);
}
}
return filteredArray;
}
// 배열에 push되는 요소들을 콜백함수해서 원하는 것을 매핑하는 함수
function map(array, callback) {
const mappedArray = [];
for (const user of array) {
mappedArray.push(callback(user));
}
return mappedArray;
}
console.log('=========================');
// 회원정보에서 회원의 이름들만 다 추출해서
// 배열에 담아줘
const nameList = map(userList, user => user.userName);
console.log(nameList);
// 회원정보에서 회원의 주소들만 다 추출해서
// 배열에 담아줘
const addressList = map(userList, user => user.address);
console.log(addressList);
// 회원의 첫번째 취미들만 다 추출해줘
const firstHobbyList = map(userList, user => user.hobbys[0]);
console.log(firstHobbyList);
// 모든 회원의 이름과 계정을 연결해서 배열에 담아줘
// [ 대길이(abc1234), 빠나나(banana), ... ]
const myCustomList = map(userList, user => `${user.userName}(${user.account})`);
console.log(myCustomList);
console.log('==================================');
// 서울에 사는 급여가 400만원보다 높은 사람의 이름과 주소만 추출해줘
// 서울에 사는 급여가 400만원보다 높은 사람 - filter
// 이름과 주소만 - mapping
const filtered = filter(userList, user => user.address === '서울' && user.salary > 4000000);
console.log(filtered);
const mapped = map(filtered, user => {
return {
name: user.userName,
addr: user.address
}
});
console.log(mapped);
const userList = [
{
account: 'abc1234',
userName: '대길이',
job: '추노',
address: '서울',
hobbys: ['수영', '축구', '테니스'],
salary: 5400000,
age: 35,
},
{
account: 'banana',
userName: '빠나나',
job: '과일',
address: '서울',
hobbys: ['푸드파이팅', '테니스'],
salary: 9700000,
age: 18,
},
{
account: 'park1234',
userName: '주차왕',
job: '발렛파킹',
address: '경기',
hobbys: ['족구', '축구', '테니스', '영화감상'],
salary: 3900000,
age: 56,
},
{
account: 'fire',
userName: '불꽃남자카리스마',
job: '게이머',
address: '서울',
hobbys: ['독서', '테니스'],
salary: 7900000,
age: 42,
},
];
function min(userList, key) {
let minNumIndex = 0;
for(let i = 0; i < userList.length; i++) {
let minimum = userList[0][key]; // 기준
if(minimum > userList[i][key]) {
minimum = userList[i][key];
minNumIndex = i;
}
}
return userList[minNumIndex];
}
// '' 안에 들어있으므로 []안에 key를 넣어야함
console.log('최소 salary를 가진 사용자:', min(userList, 'salary'));
console.log('최소 age를 가진 사용자:', min(userList, 'age'));
function find(condition) {
for (var user of userList) {
if (condition(user)) {
return user;
}
}
return null;
}
function some(condition) {
for (var user of userList) {
if (condition(user)) {
return true;
}
}
return false;
}
function every(condition) {
for (var user of userList) {
if (!condition(user)) {
return false;
}
}
return true;
}
// '서울'에 사는 첫 번째 사용자를 찾는 예시
const firstUserInSeoul = find((user) => user.address === '서울');
console.log('서울에 사는 첫 번째 사용자:', firstUserInSeoul);
// 급여 5,000,000 이상인 사용자가 하나라도 있는지 확인하는 예시
const hasHighEarningUser = some((user) => user.salary >= 5000000);
console.log('연봉이 5,000,000 이상인 사용자가 있는가?:', hasHighEarningUser);
// 모든 사용자가 '서울'에 사는지 확인하는 예시
const allUsersInSeoul = every((user) => user.address === '서울');
console.log('모든 사용자가 서울에 사는가?:', allUsersInSeoul);