
parameter : 함수에서 입력받는 값에 대한 정의argument : 실제 입력하는 값// 함수 선언
function calc(num) {
console.log((num * 10 / 2 % 3).toString());
}
// 함수 실행
calc(4);
// 결과 : 2
function multiply(x, y) {
console.log(x * y)
}
multiply(2, 3)
// 결과 : 6
function multiply(x, y = 10) {
console.log(x * y)
}
multiply(2, 4)
multiply(2)
/** 결과
8
10
*/
// 반환 받기
function multiply(x, y) {
return x * y
}
const result1 = multiply(2, 3);
console.log(result1);
const multiplyTwo = function(x, y){
return x * y;
}
const 함수이름 = (파라미터) => {
함수 바디
}
const multiply2 = (x, y) => {
return x * y;
}
console.log(multiply2(2, 5));
const multiply3 = (x, y) => x * y;
console.log(multiply3(3, 4))
const multiply5 = x => y => z => `x: ${x} y: ${y} z: ${z}`;
console.log(multiply5(2)(5)(7));
// 위와 같은 함수 선언
function multiply6(x) {
return function(y){
return function(z){
return `x: ${x} y: ${y} z: ${z}`;
}
}
}
// x: 2 y: 5 z: 7
const multiplyThree = function (x, y, z) {
console.log(arguments);
return x * y * z;
}
console.log(multiplyThree(2, 3, 4))
const multiplyAll = function (...arguments) {
return Object.values(arguments).reduce((a, b) => a * b, 1);
}
console.log(multiplyAll(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))
(function(x,y){
console.log(x*y);
})(4,5);
let number = [
'one',
'two',
'three',
'four',
'five',
'six',
'seven'
]
console.log(number.push('가나다'));
console.log(number);
console.log(number.pop());
console.log(number);
console.log(number.shift());
console.log(number);
console.log(number.unshift('one'));
console.log(number);
(삭제 시작부분, 삭제 개수)console.log(number.splice(0, 3));
console.log(number);
console.log(number.concat('가나다'));
console.log(number);
(시작부분, 마지막 부분+1)console.log(number.slice(0, 3));
console.log(number);
...이 없고 배열만 넣으면 그 배열을 넣는 것let number2 = [
...number
];
console.log(number2);
console.log([
...number,
] === number)
console.log(number.join());
console.log(number.join('! '));
number.sort();
console.log(number);
a, b 비교시,
1. a를 b보다 나중에 정렬하려면(뒤에 두려면) 0보다 큰 숫자 반환
2. a를 b보다 먼저 정렬하려면(앞에 두려면) 0보다 작은 숫자 반환
3. 원래 순서를 그대로 두려면 0을 반환
let num = [
1,
9,
3,
7,
5,
];
console.log(num);
num.sort((a, b) => {
return a > b ? 1 : -1;
});
console.log(num);
num.sort((a, b) => a > b ? -1 : +1);
console.log(num);
console.log(number.map((x) => `num : ${x}`));
numbers = [1, 2, 5, 7, 2, 8, 11];
console.log(numbers.filter((x) => x % 2 === 0))
console.log(numbers.find((x) => x % 2 === 0));
console.log(numbers.findIndex((x) => x % 2 === 0));
this 키워드let info = {
year: '2023',
month: '7월',
go: function () {
return `오늘은 ${this.year}년 ${this.month}월 입니다.`;
}
};
console.log(info);
console.log(info.year);
const key = 'month';
console.log(info[key]);
console.log(info.go());
const yearKey = 'year';
const yearValue = '2023';
const monthKey = 'month';
const monthValue = '7월';
const info2 = {
[yearKey]: yearValue,
[monthKey]: monthValue,
go: function () {
return `${this.year}년 입니다!`
}
};
console.log(info2);
console.log(info2.go());
info2['month'] = '8월';
console.log(info2);
info2['day'] = '25일';
console.log(info2);
delete info2['day'];
console.log(info2);
⭐⭐⭐ const로 선언시 변경 불가한데 어떻게 속성 수정/추가/삭제가 가능한가 ❓❗
const 로 선언시 객체 자체 변경 불가능const harry = {
name: '해리포터',
group: '그리핀도르'
}
console.log(harry);
harry = {};
harry['group'] = '슬리데린';
console.log(harry);
console.log(Object.keys(harry)); // 키값이 Array로 반환
console.log(Object.values(harry)); // Value값을 Array로 반환
: 생략name만 쓰는 것은 name:name 과 같음const name = '해리포터';
const harry2 = {
name, // => === name : name 과 같음 => 키가 string에 해당되는 값이 들어가고 value에는 name에 해당하는 변수값이 들어감
};
console.log(harry2);
primitive ?let original = '안녕하세용';
let clone = original;
console.log(original);
console.log(clone);
clone += ' 좋은 아침입니다.'
console.log(original);
console.log(clone);
👉 clone 은 original의 값을 복사한 것일 뿐, 실제 메모리상으로는 다른 곳이다
👉 clone 의 내용 변경시 변수 clone 이 가리키고 있는 메모리 공간만 변화됨 !
let originalObj = {
name: '해리포터',
group: '그리핀도르',
};
let cloneObj = originalObj;
console.log(originalObj);
console.log(cloneObj);
originalObj['name'] = '헤르미온느';
console.log(originalObj);
console.log(cloneObj);
console.log(original === clone);
console.log(originalObj === cloneObj);
const yuJin1 = {
name: '안유진',
group: '아이브',
};
const yuJin2 = yuJin1;
const yuJin3 = {
name: '안유진',
group: '아이브',
};
console.log(yuJin1 === yuJin2); // True => 같은 메모리 공간을 참조했기 때문
console.log(yuJin1 === yuJin3); // False => 값은 같지만 실제로는 다른 메모리 공간을 참조하기 때문에 다름
console.log(yuJin2 === yuJin3); // False => 값은 같지만 실제로는 다른 메모리 공간을 참조하기 때문에 다름
const yuJin4 = {
...yuJin3
};
console.log(yuJin4);
console.log(yuJin4 === yuJin3);
const yuJin5 = {
year: '2003',
...yuJin3
};
console.log(yuJin5);
spread operator 은 순서가 중요const yuJin6 = {
name: '가나다',
...yuJin3
};
console.log(yuJin6);
const yuJin7 = {
...yuJin3,
name: '가나다',
};
console.log(yuJin7);
try ... catch : 에러 잡는데 사용try {
...
} catch {
...
} finally {
...
}
trythrow : 새로운 객체 생성. 에러를 던지는 순간 함수의 다음 코드 실행Xcatch : 에러를 던지면 바로 catch 문으로 이동해 실행finally : try 의 에러여부 상관없이 무조건 실행function runner() {
try {
console.log('Hello');
throw new Error('문제 생김');
console.log('World');
}
catch (e) {
console.log('------Catch-------')
console.log(e);
} finally {
console.log('----------finally-------------')
}
};
runner();
📒 코드팩토리 - <9시간만에 끝내는 코드팩토리의 Javascript> https://inf.run/8E6Q
유익한 글이었습니다.