2024~2025 동계모각코
[2024~2025 동계모각코] 3회차 결과
슈슈버거
2025. 1. 20. 05:40
2025.01.14
수강 완료 화면


23강
- 배열 및 객체의 분해
<배열편>
const userNameData = ["Max", "Schwejl"]
// 기존의 분해 방식
const firstName = userNameData[0];
// 더 짧은 방식
const [firstName, lastName] = ["Max", "Schwejl"];
이렇게 해두면 firstName을 치면 자동으로 Max가 선택된다.
분해를 통해 각 변수에 값을 자동으로 젖아해놓는 것이다.
<객체편>
const user = {
name: "Max",
age: 34
};
// 기존 방식
const name = user.name;
const age = user.age;
// 더 짧은 방식
const {name: userName, age} = {
name: "Max",
age: 34
}
객체의 경우는 객체에 정의된 필드 이름을 사용해야 함
(배열은 마음대로!!)
단 name: userName 처럼 내가 별칭을 지어줄 수는 있음
기호의 왼쪽에 나오는 중괄호는 분해에 사용된다는 점
24강
함수 매개변수 목록에서 분해
- 객체를 포함하는 매개변수를 수록할 경우 객체 프로퍼티를 꺼내서 로벌 범위 변수로 만들 수 있다.
- function storeOrder(order) { localStorage.setItem('id', order.id); localStorage.setItem('currency', order.currency); } // 분해 by 점 표기법 function storeOrder({id, currency}) { localStorage.setItem('id', id); localStorage.setItem('currency', currency); }
- 그치만 주의할 것!! 여전히 함수 storeOrder는 매개변수를 하나만 받고 있는거다!! (중괄호로 싸여져 있다는 점)
- 아래와 같이 호출된다는 점!
- storeOrder({id: 5, currency: 'USD', amount: 15.99});
25강
스프레드 연산자 (== 전개 연산자)
- 병합된 리스트를 만들려면 []로 이루어진 새 배열을 반들고 […]을 이용
const hobbies = ["Sports", "Cooking"];
const user = {
name: "Max",
age: 34
};
const newHobbies = ["Reading"];
// 그냥 두개의 배열이 합쳐져서 mergedHobbies안에는 구분된 값 표현
const mergedHobbies = [hobbies, newHobbies];
// 그냥 다 합치고 싶다면?
const mergedHobbies = [...hobbies, ...newHobbies];
>> 이렇게 하면 각 배열의 값들만을 새 배열에 추가함
// 이렇게 하면 isAdmin, name, age 3개의 속성을 가지는 객체 생성
const extendedUser = {
idAdmin: true,
...user
}
26강
컨트롤 구조 다시 살펴보기(제어문 살펴보기)
- 일반적으로는 if문을 사용해 사전에 알 수 없는 조건을 걸러낸다
- const password = prompt('Your Password'); if (password === "Hello") { console.log("Hello works"); } else if (password === "hello") { console.log("hello works"); } else { console.log("Access not granted."); }
- for문 (배열 순회 반복문)
- const hobbies = ["Sprots", "Cooking"]; for (const hobby of hobbies) { console.log(hobby); }
27강
리액트 없이 dom 조작
- 로드된 웹사이트 확인, 런타입에 읽고 조작 : js의 장점 but 리액트 시에는 필요없음(선언형이기 때문)
28강
함수를 값으로 사용하기
- 내장된 setTImeout()이런 함수를 사용 가능미리 작성된 함수를 전달할 떄는 이름만!!! 전달한다!! () 없이
- 반환값을 원하면 ()을 붙이면 된다.
- 그러면 handleTimeout이 먼저 실행되고 그 다음에 그 반환값을 매개변수로 해서 setTimeout이 실행
- 근데 우리는 지금 그러지 않으니까 그냥 이름만 적어서 함수 자체!
- 반환값을 원하면 ()을 붙이면 된다.
- // 이렇게 매개변수란에 바로 익명함수도 작성 가능 setTimeout(() => {}) // 사전 정의 함수 사용 가능 function handleTimeout() { console.log("Timed out!"); } const handleTimeout2 = () => { console.log("Timed out ... again!"); } // 함수랑 이 함수를 실행할 떄까지 대기할 ms 단위의 시간 setTimeout(handleTimeout, 2000);
내장 함수에만 쓸 수 있냐? 그것도 아님!! 내가 만드는 함수에도 쓸 수 있음
function greeter(greetFn) {
greetFn();
}
greeter(() => console.log("Hi"));
이렇게 하면 하단 줄의 익명함수의 내용이 greetFn이라는 함수명을 가지게 되는 거고 greetFn()에서 해당 함수의 내용이 실행이 된다
29강
함수 내부에서 함수 정의하기 (리액트 사용시 적합)
function init() {
function greet() {
console.log('Hi!');
]
greet();
}
greet(); // 사용 불가 얘를 생성하는함수 내에서만 사용 가능
init(); // 사용 가능 (정상적으로 Hi!가 출력됨)
30강
참조형과 기본 값 비교
let userMessgae = 'Hello!';
// 기존 값 수정 불가(새로운 변수가 되어버림)
userMessage = userMessage.concat('!!!');
const hobbies = ["Sprots", "Cooking"];
// 기존 배열이 수정됨
// (기존 배열의 주소로 가서 확인하고 거기에 원소 추가)
hobbies.push("Working");
console.log(hobbies);
참조형 변수를 저장할 때는 그 값의 주소를 저장한다.
string이런 거는 바로 값을 저장해 버린다고 볼 수 있다. (정확히는 아님)
** 주소는 객체를 다룰 때만!!! **
const를 수정할 수 있는 이유!! (새 변수를 만들수 없다는 거니까!!)
- 상수에 객체 저장 객체는 주소 참조해 접근이니까 메모리 주소에 있는 값을 조작할 수는 있음
31강
자료 모음
- next-gen-js-summary(pdf)
let, const : var대체
객체의 내용 호출
class Person {
name = 'Max';
printMyName = () => {
console.log(this.name);
}
}
const person = new Person();
person.printMyName();
class 사용시 inheritance 사용 가능
class Human {
species = 'human';
}
class Person extends Human {
name = 'Max';
printMyName = () => {
console.log(this.name);
}
}
const person = new Person();
person.printMyName();
console.log(person.species);
32강
js array function
- map, find, findIndex, filter, reduce, concat, slice, splice
33강
정답 코드 모음