개발/Java Script
modern Javascript 문법
ksy0314
2020. 9. 1. 22:54
Arrow function
기존의 함수 표현식을 사용할때
let add = function(x,y){
return x+y;
}
arrow function을 사용하여 간단하게 표현했을때
let add = (x,y) => { return x + y; }
arrow function에 return줄만 존재한다면 return과 {}생략 가능 생략가능
let add = (x,y) => x + y;
arrow function의 매개변수가 1개라면 소괄호 생략 가능
let get_arr_length = x => x.length;
arrow function을 사용하여 간단한 익명함수 생성후 실행
(() => {console.log('hi')})()
(정말 간단하고 사용하기 좋아보이지만 Arrow function은 this를 가지지 않기때문에 신중히 사용!)
Destructuring Assignment
이름은 구조 분해 할당으로 배열이나 객체의 요소를 다시 할당할 수 있는 구문이다.
let a, b;
[a, b] = [10, 20];
console.log(a); // 10
console.log(b); // 20
let o = {p: 42, q: true};
let {p: foo, q: bar} = o;
console.log(foo); // 42
console.log(bar); // true
할당시 기본값을 주어 분해한 값이 undefined 일경우 기본값을 가지게 할 수 있다.
let a, b;
[a=5, b=7] = [1];
console.log(a); // 1
console.log(b); // 7
let {a = 10, b = 5} = {a: 3};
console.log(a); // 3
console.log(b); // 5
임시 저장 공간 없이 두 변수의 값을 교환할 수도 있다.
let a = 1;
let b = 3;
[a, b] = [b, a];
console.log(a); // 3
console.log(b); // 1
새로운 이름의 변수 할당 가능
let {a: aa, b: bb = 5} = {a: 3};
console.log(aa); // 3
console.log(bb); // 5
Spread 문법을 사용하며 배열 형태로 받는것도 가능하다
let [a, ...b] = [1, 2, 3];
console.log(a); // 1
console.log(b); // [2, 3]
let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
a; // 10
b; // 20
rest; // { c: 30, d: 40 }
(구조분해할당에서 Spread 문법을 사용하면 나머지가 요소가 새로운 객체의 형태로 들어가게 됨)
Rest / Spread 문법
argument가 parameter보다 많을때
const add = (a, b, ...rest) => { // 반드시 마지막 파라미터에 ...을 붙여서 사용해야 합니다.
console.log(a) // 5
console.log(b) // 3
console.log(rest) // [ 9, 2, 1, 6 ]
}
add(5, 3, 9, 2, 1, 6)
배열이나 객체의 요소를 풀어서 표현함
let a = [1,2,3];
console.log(...a); //1,2,3
let obj1 = {a:1, b:2};
let obj2 = {b:3, c:4};
let obj3 = {...obj1, ...obj2} //{a:1, b:3, c:4}
배열이나 객체 복사에 사용
let arr = [1,2,3];
let new_arr = [...arr];
let obj = { a: 1, b: 'hi'}
let new_obj = {...obj}