Javascript 신기하고 자주쓰는 문법1
Lv.1의 신입개발자가 자바스크립트를 처음 접하면서
신기하고 유용했던 자스 문법기록을 위한 게시물입니다!
null 병합연산자 (Nullish coalescing operator)
왼쪽 연산자가 null 또는 undefined일 때,
오른쪽 연산자를 반환하고 그렇지 않으면 왼쪽 연산자를 반환함
// Nullish coalescing operator
let leftExpr = null;
let rightExpr = 'Hi';
// bad code
let bad;
if (leftExpr === null || leftExpr === undefined) {
bad = rightExpr;
} else {
bad = leftExpr;
}
console.log(bad);
// good code
let good = leftExpr ?? rightExpr;
console.log(good);
논리 OR 연산자 (logical OR operator)
왼쪽 연산자가 false일 때, 오른쪽 연산자를 반환하고
그렇지 않으면 왼쪽 연산자를 반환함
// logical OR operator
let leftExpr = 0;
let rightExpr = 'Hi';
// bad code
let bad;
if (leftExpr) {
bad = leftExpr
} else {
bad = rightExpr
}
console.log(bad);
// good code
let good;
good = leftExpr || rightExpr;
console.log(good);
구조분해할당 (object destructuring)
객체나 배열을 해체한 뒤 해당 값을 변수에 담을 수 있음
// Object Destructuring
const dog = ['mingky', 4];
const person = {
name: '당황스러운 신입개발자',
lv: 1,
job: 'engineer'
};
// 배열구조분해
// 배열 분해 후 순서대로 변수에 할당함
const [dogName, age] = dog;
console.log(dogName); // mingky
console.log(age); // 4
// 구조분해할당
// 객체 키와 동일한 이름으로 선언시, 자동으로 객체의 값이 할당됨!
const {name, job} = person;
console.log(name); // 당황스러운 신입개발자
console.log(job); // engineer
전개 구문 (Spread syntax Object)
두개 이상의 객체를 합친 새로운 객체를 생성함
// Spread Syntax Object
let person = {
name: '당황스러운 신입개발자',
lv: 1
}
let dog = {
dogName: 'mingky',
age: 4
}
let p = ['당황스러운 신입개발자', 1]
let d = ['mingky', 4]
// Object.assign()
const assignObj = Object.assign(person, dog)
console.log(assignObj); // { name: '당황스러운 신입개발자', lv: 1, dogName: 'mingky', age: 4 }
// spread syntax
const spreadObj = { ...person, ...dog, lv:2 }
const spreadArr = [ ...p, ...d ]
console.log(spreadObj); // { name: '당황스러운 신입개발자', lv: 2, dogName: 'mingky', age: 4 }
console.log(spreadArr); // [ '당황스러운 신입개발자', 1, 'mingky', 4 ]
!주의할점!
let person1 = {
name: '당',
job: 'engineer'
}
let person2 = {
name: '황',
age: 20
}
const spread = { ...person1, ...person2 }
console.log(spread);
// { name: '황', job: 'engineer', age: 20 }
객체의 중복되는 키값은 최종 객체의 키값으로 덮어쓰기 됨
옵셔널 체이닝 (Optional Chaining)
프로퍼티가 없는 중첩객체에 에러없이 접근할 수 있음
// Optional Chaning
const user1 = {
id: 'embarrassedev',
name: '당황스러운 신입개발자',
state: {
message: '안녕하세요, 잘부탁드립니다 :)'
}
}
const user2 = {
id: 'mingky',
name: '밍키',
}
console.log(user1.state.message); // 안녕하세요, 잘부탁드립니다 :)
console.log(user2.state.message); // error
// optional chaining
console.log(user2.state?.message); // undefined
!주의할점!
옵셔널 체이닝은 없어도 되는 객체의 프로퍼티를 판별할 때만 사용할것.
남용시 꼭 있어야하는 프로퍼티가 없을때 디버깅이 어려워지기 때문!
Author And Source
이 문제에 관하여(Javascript 신기하고 자주쓰는 문법1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dl950101/Javascript-자주쓰는-문법1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)