| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 내일배움카드
- CSS
- useRef
- Github
- react
- 메가바이트스쿨
- 비전공자
- 개발 공부
- 입문
- styled-components
- 패스트캠퍼스
- GIT
- TypeScript
- 공식문서
- 국비지원교육
- 모던 자바스크립트 딥 다이브
- 모던 딥 다이브 자바스크립트
- MegabyteSchool
- 알고리즘
- 자료구조
- 프로그래머스
- 리액트
- 자바스크립트
- useMemo
- 프론트엔드
- 개발자취업부트캠프
- 이벤트
- 코딩테스트
- JavaScript
- next.js
Archives
- Today
- Total
개발 기록 남기기✍️
자바스크립트 중급 (4) - 구조 분해 할당, 나머지 매개변수, 전개구문, 클로저 본문
이번 포스트도 역시나 코딩앙마님의 강의를 보고 작성했습니다.
[자바스크립트 중급 강좌 : 140분 완성 - YouTube](https://www.youtube.com/watch?v=4_WLS9Lj6n4&t=5204s)
1. 구조 분해 할당
구조 분해 할당
배열이나 객체의 속성을 분해해서 그 값을 변수에 담을 수 있게 하는 표현식
let users = ["Mike","Tom"];
// let user1 = users[0];
// let user2 = users[1];
let [user1, user2] = users;
console.log(user1); // "Mike"
console.log(user2); // "Tom"
let str = "Mike-Tom-Jane";
let [usr1, usr2, usr3] = str.split("-");
console.log(usr2); // "Tom"
✔️undefined를 방지하기 위해 기본값을 줄 수 있다.
let [a, b, c = 5] = [1,2];
console.log(c); // 5
배열 구조 분해
배열의 일부 반환값을 무시할 수 있다.
let [user1, ,user2] = ['Mike', 'Tom', 'Jane'];
console.log(user1); // "Mike"
console.log(user2); // "Jane"
바꿔치기
let a = 1;
let b = 2;
[a,b] = [b,a];
console.log(a,b); // 2,1
객체 구조 분해
변수의 순서를 바꿔도 동일하게 동작한다.
변수를 새로운 변수 이름으로 할당 가능하고, 기본값이 설정 가능하다.
let user = {name:"Mike", age:30};
// let name = user.name;
// let age = user.age;
let {name : userName, age : userAge} = user;
console.log(userName); // "Mike"
console.log(userAge); // 30
2. 나머지 매개변수, 전개 구문
✔️ 인수 전달 : JS에서 함수에 전달하는 인수의 개수 제한은 따로 없다.
✔️ 인수 전달 방법
- argument
- 나머지 매개 변수
arguments
함수로 넘어온 모든 인수에 접근한다.
함수 내에서 사용 가능한 지역 변수이다.
length와 index를 사용할 수 있는 Array 형태의 객체이다.
배열의 내장 메서드는 사용할 수 없다.(forEach, map)
function showName(name){
console.log(arguments.length);
console.log(arguments[0]);
console.log(arguments[1]);
};
showName("Mike","Jane");
// 2
// "Mike"
// "Jane"
나머지 매개변수
받은 값을 배열로 반환한다.
함수에 받은 값이 없으면 빈 배열을 반환한다.
function showName(...names){
console.log(names);
};
showName(); // []
showName("Mike"); // ["Mike"]
showName("Mike", "Jane"); // ["Mike", "Jane"]
전개 구문
배열과 객체를 복제한다.
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let result = [...arr1, ...arr2];
console.log(result); // [1,2,3,4,5,6];
3. 클로저(Closure)
Javascript는 어휘적 환경(lexical)을 갖는다.
내부 lexical 환경은 외부 lexical 환경에 대한 참조를 갖는다.
// lexical 환경 - one : 초기화 X (사용 불가) / addOne : function (사용 가능)
let one; // lexical - one : undefined (사용 가능) / addOne : function
one = 1; // lexical - one : 1 / addOne : function
function.addOne(num){
console.log(one + num);
};
addOne(5); // lexical은 두 가지로 나뉜다.
// 내부 lexical - num : 5
// 전역 lexical - one : 1 / addOne : function
클로저
함수와 Lexical 환경의 조합으로, 함수가 생성될 당시의 외부 변수를 기억한다.
함수가 생성된 이후에도 계속해서 접근이 가능하다.
'Front-End > JavaScript' 카테고리의 다른 글
| 자바스크립트 중급 (6) - Class, Promise, async, await, Generator (0) | 2022.12.05 |
|---|---|
| 자바스크립트 중급 (5) - setTimeout/setInterval, call, apply, bind, 상속, prototype (0) | 2022.12.05 |
| 자바스크립트 중급 (3) - 문자열 Method, 배열 Method (1) | 2022.12.05 |
| 자바스크립트 중급 (2) - Symbol, 수학 Method (0) | 2022.12.05 |
| 자바스크립트 중급 (1) - TDZ, 생성자 함수, 객체 메소드, 계산된 프로퍼티 (0) | 2022.12.05 |