간결한 문법으로, 자주 사용될 수 있음
개인적으로는 간결한 문법보다는 선명하게 이해할 수 있지만, javascript 개발자들 사이에서 사용됨
condition ? exprifTrue : exprifFalse
예제
const myArray = [1, 2]
let descMyArray = '';
if (myArray.length === 0) {
descMyArray = '빈 배열';
}else {
descMyArray = '아이템이 있는 배열';
}
console.log(descMyArray);
동일한 동작을 하는 코드를 삼항 연산자로 작성시
const myArray = [1,2];
let descMyArray = myArray.length === 0 ? '빈 배열' : '아이템이 있는 배열';
console.log(descMyArray);
ES6에서 나온 문법으로, 인자 값을 넣지 않을 시, 디폴트로 인자에 넣어지는 값을 설정할 수 있음
function printName(name) {
console.log(name);
}
printName();
function printName(name='jin') {
console.log(name);
}
printName();
printName('jin');
let data = {
name: 'jin',
age: 20
};
let {age, name} = data; // 동일한 프로퍼티명을 써줘야, 해당 프로퍼티에 맞는 값이 대입됨
console.log(name, age);
// 프로퍼티명과 다른 변수명을 사용하고자 할 경우, 대입할 프로퍼티명: 다른 변수명의 형태로 써줘야 함
let {name: myName, age:myAge} = data;
consol.log(myName, myAge);
// 꼭 객체의 모든 프로퍼티를 가져올 필요는 없고, 객체의 프로퍼티 중 가져오고 싶은 데이터만 가져올 수있음
let {name: myname2} = data;
console.log(myName2);
let data = {
name: "jin",
age:29
};
let { name, hooby='coding'} =data;
console.log(name, hobby);
let data = {
name:"jin",
age:20
};
let {name, age: myAge=27, hobby='coding'} = data;
console.log(name, myAge, hobby);
// console.log(name, myAge, hobby); 를 출력하면 에러남 (age 라는 프로퍼티는 myAge로 변수를 선언하기 때문)
배열 분해 할당
배열의 각 아이템을 별도 변수에 할당하는 문법
let myArray = [1, 2, 3, 4];
let [first, second, third, fourth] = myArray;
console.log(first, second, third, fourth);
//배열의 일부만 추출 가능, 첫번째 아이템부터 대입, 대입할 변수가 없을 경우는 대입하지 않음
let [data1, data2] = myArray;
console.log(data1, data2);
//대입할 아이템이 없을 경우, undefined 로 대입
let myArray2 = [1,2];
let [item1, item2, item3] = myArrya2;
console.log[item1, item2, item3];
//컴마를 통해, 필요하지 않은 아이템을 건너 뛸 수 있음
let myArray3 = ['jin', 'kim', 'lee'];
let [value1, , value2] = myArray3;
console.log(value1, value3);
let myArray = ['jin', 'kim', 'lee', 'seo', 'jeon'];
let [itme1, item2, ...item] = myArray;
console.log(item1);
console.log(item2);
console.log(item3);
let myArray1 = [10, 20];
let [item1 ,itme2=10, itme3=30] = myArray1;
console.log(item1, item2, item3);
let a = 1;
let b = 2;
[a, b] = [b, a];
console.log(a, b)
function getData() {
return [10, 20];
}
let [a,b] = getData;
console.log(a, b)
let data = 'jin kim lee';
console.log(data.split(' '));
console.log(data.split(','));
let data = 'jin kim';
let [giveName, lastName] = data.split(' ');
console.log(giveName, lastName);
function getData(...rest) {
console.log(rest);
//typeof rest 실행시는 object 로 출력되므로, Array.isArray() 의 경우 인자값이 배열이면 true를 리턴하므로,
// 이를 사용해서 해당 변수가 배열임을 확인
console.log(Array.isArray(rest));
}
getData(10, 20, 30, 40, 50, 60);
function getData(a, ....rest) {
console.log(a);
console.log(rest);
//typeof rest 실행시는 object로 출력되므로, Array.isArray()의 경우 인자값이 배열이면 true를 리턴하므로,
// 이를 사용해서 해당 변수가 배열임을 확인
console.log(Array.isArray(rest));
}
getData(10,20,30,40,50,60);
function getData(...rest, a, b) // 이와 같은 형태는 안됨
fuction getData(a, b, ...rest)// 반드시 이런 형태로
let myArray = [1, 2, 3];
console.log(...myArray);
function func(a, b, c) {
console.log(a);
console.log(b);
console.log(c);
}
const dat = [1,2,3];
func(...data);
const myArray = [1, 2, 3];
const myArray2 = [...myArry1, 4, 5, 6];
console.log(myArray2);