구조분해할당 구문은 배열이나 객체의 속성을 분해해서 그 값을 변수에 담을 수 있게 하는 표현식
▶ 배열 구조분해
let [x,y] = [1,2];
//일반
let user1 = users[0];
let user2 = users[1];
let user3 = users[2];
//구조분해할당
let users = ['sian','jian','wian'];
let str = "한-서-현";
let [name1,name2,name3] = str.split('-');
console.log(user1); //한
console.log(user2); //서
console.log(user3); //현
let [a,b,c] = [1,2];
//a = 1
//b = 2
//c = undefined
이런 undefined 를 미리 방지하기 위해 기본값을 줄 수 있다
let [a=3, b=4, c=5] = [1,2];
a = 1
b = 2
c = 5
▶ 객체 구조분해
let user = {name : "sian" , age:23};
let {name, age} = user;
배열과 마찬가지로 객체에도 기본값을 줄 수 있다
※ 나머지 매개변수
자바스크립트에서 함수에 전달하는 인수의 갯수에는 제한이 없다
ex )
function showNmae(name){
console.log(name);
}
showName('sian');
showName('sian','moongchi');
showName(); //undefined, 에러가 나진 않는다
두번째 showName 함수의 인자에 값을 2개 넣었다.
showName 은 인자가 1개만 들어갈 수 있는 함수이지만, 2개를 넣는다고 해서 오류가 나진 않는다.
자바스크립트는 함수에 전달하는 인수갯수의 제한이 없기 때문이다 !
다만, console 에는 sian 만 찍히고, 두번째 인자인 moongchi는 무시된다.
▷ Argument
- Argument 는 함수로 넘어온 모든 인수에 접근할 수 있다
- 함수 내에서 이용 가능한 지역변수이다
- length 와 index 가 있어서 배열이라고 생각될 수 있겠지만, array 형태의 객체이다. - (이게 무슨말인지 모르겠다... array 형태의 객체를 배열이라고 부르기로 사회적 약속을 한 것 아닌가요 . . . ? ) but 배열의 내장 메서드를 갖고 있지 않기 때문에 forEach 나 map 같은 것은 사용할 수 없다.
▶ 나머지 매개변수 구문
나머지 매개변수는 정해지지 않은 갯수의 인수를 배열로 나타낼 수 있게 한다.
function showName(...names){ //names 배열 안에 전달된 인수들이 들어간다
console.log(names);
}
showName(); //[]
showName('sian ') // ['sian']
showName('sian', 'tom') //['sian','tom']
skills 스킬들은 몇개가 있을지 모르니까 나머지 매개변수인 ...skills 로 받음
따라서 나머지 매개변수는 마지막에 존재해야함 (인자로 받을때만)
근데 이렇게는 사용할 수 있음
let arr1 = [1,2,3];
let arr2 = [4,5,6];
let result = [0, ...arr1, ...arr2, 7,8,9];
arr.push() / arr.splice() / arr.concat()
▶ 전개구문(Spread syntax) : 복제
오 ... 이렇게 객체를 복사하믄 Object.assign 을 사용하지 않아도 되군용
'Javascript' 카테고리의 다른 글
[Javascript] 프로미스 (Promise) (0) | 2022.12.03 |
---|---|
[Javascript] setTimeout / setInterval /call & apply & bind (0) | 2022.12.03 |
[Javascript] Symbol / 배열메소드 / 문자열메소드 (1) | 2022.12.03 |
[Javascript] 객체 메소드 / computed property (1) | 2022.12.03 |
[Javascript] ES6 / 익명함수 / 가변인자 함수 / 콜백함수 / 클로저 함수 (0) | 2022.06.22 |