Ternary Operator
- 2가지 경우로 나뉘는 경우에는 Ternary Operatior 사용하기
// Ternary Operator
// ❌ Bad Code 💩
function getResult(score) {
let result;
if (score > 5) {
result = '👍';
} else if (score <= 5) {
result = '👎';
}
return result;
}
// ✅ Good Code ✨
function getResult(score) {
return score > 5 ? '👍' : '👎';
}
console.log(getResult(6));
console.log(getResult(5));
Nullish Coalescing
- ??의 사용 : null, undefined 일 때 해당
- Default Parametersms undefined 일 때만 해당된다.
// Nullish coalescing operator
// ❌ Bad Code 💩
function printMessage(text) {
let message = text;
if (text == null || text == undefined) {
message = 'Nothing to display 😜';
}
console.log(message);
}
// ✅ Good Code ✨
function printMessage(text) {
const message = text ?? 'Nothing to display 😜'; // 텍스트가 있다면 그대로 쓰고 없으면 출력문 저장
console.log(message);
}
// 🚨 Default parameter is only for undefined
function printMessage(text = 'Nothing to display 😜') {
console.log(text);
}
// 🚨 Logical OR operator ||
function printMessage(text) {
const message = text || 'Nothing to display 😜';
console.log(message);
}
const result = getInitialState() ?? fetchFromServer();
console.log(result);
function getInitialState() {
return null;
}
function fetchFromServer() {
return 'Hiya from 💻';
}
printMessage('Hello');
printMessage(null);
printMessage(undefined);
printMessage(0);
printMessage('');
Object Destructuring
// Object Destructuring
const person = {
name: 'Julia',
age: 20,
phone: '0107777777',
};
// ❌ Bad Code 💩
function displayPerson(person) {
displayAvatar(person.name);
displayName(person.name);
displayProfile(person.name, person.age);
}
// ❌ Bad Code 💩
function displayPerson(person) {
const name = person.name;
const age = person.age;
displayAvatar(name);
displayName(name);
displayProfile(name, age);
}
// ✅ Good Code ✨
function displayPerson(person) {
const { name, age } = person;
displayAvatar(name);
displayName(name);
displayProfile(name, age);
}
Spread Syntax Object
// Spread Syntax - Object
const item = { type: '👔', size: 'M' };
const detail = { price: 20, made: 'Korea', gender: 'M' };
// ❌ Bad Code 💩
item['price'] = detail.price;
// ❌ Bad Code 💩
const newObject = new Object();
newObject['type'] = item.type;
newObject['size'] = item.size;
newObject['price'] = detail.price;
newObject['made'] = detail.made;
newObject['gender'] = detail.gender;
console.log(newObject);
// ❌ Bad Code 💩
const newObject2 = {
type: item.type,
size: item.size,
price: detail.price,
made: detail.made,
gender: detail.gender,
};
console.log(newObject);
// ✅ Good Code ✨
const shirt0 = Object.assign(item, detail);
console.log(shirt0);
// ✅ Better! Code ✨
const shirt = { ...item, ...detail, price: 30 };
console.log(shirt);
Spread Syntax Array
// Spread Syntax - Array
let fruits = ['🍉', '🍊', '🍌'];
// fruits.push('🍓');
fruits = [...fruits, '🍓'];
console.log(fruits);
// fruits.unshift('🍇');
fruits = ['🍇', ...fruits];
console.log(fruits);
const fruits2 = ['🍈', '🍑', '🍍'];
let combined = fruits.concat(fruits2);
combined = [...fruits, '🍒', ...fruits2];
console.log(combined);
Optional Chaining
- ?의 사용 : A?.B A가 있다면 B가 있는지 확인하기
// Optional Chaining
const bob = {
name: 'Julia',
age: 20,
};
const anna = {
name: 'Julia',
age: 20,
job: {
title: 'Software Engineer',
},
};
// ❌ Bad Code 💩
function displayJobTitle(person) {
if (person.job && person.job.title) {
console.log(person.job.title);
}
}
// ✅ Good Code ✨
function displayJobTitle(person) {
if (person.job?.title) {
console.log(person.job.title);
}
}
// ✅ Good Code ✨
function displayJobTitle(person) {
const title = person.job?.title ?? 'No Job Yet 🔥';
console.log(title);
}
displayJobTitle(bob);
displayJobTitle(anna);
Template Literals
// Template Literals (Template String)
const person = {
name: 'Julia',
score: 4,
};
// ❌ Bad Code 💩
console.log(
'Hello ' + person.name + ', Your current score is: ' + person.score
);
// ✅ Good Code ✨
console.log(`Hello ${person.name}, Your current score is: ${person.score}`);
// ✅ Good Code ✨
const { name, score } = person;
console.log(`Hello ${name}, Your current score is: ${score}`);
// ✅ Good Code ✨
function greetings(person) {
const { name, score } = person;
console.log(`Hello ${name}, Your current score is: ${score}`);
}
Loops
// Looping
const items = [1, 2, 3, 4, 5, 6];
// ❌ Bad Code 💩
function getAllEvens(items) {
const result = [];
for (let i = 0; i < items.length; i++) {
if (items[i] % 2 === 0) {
result.push(items[i]);
}
}
return result;
}
function multiplyByFour(items) {
const result = [];
for (let i = 0; i < items.length; i++) {
result.push(items[i] * 4);
}
return result;
}
function sumArray(items) {
let sum = 0;
for (let i = 0; i < items.length; i++) {
sum += items[i];
}
return sum;
}
const evens = getAllEvens(items);
const multiple = multiplyByFour(evens);
const sum = sumArray(multiple);
console.log(sum);
// ✅ Good Code ✨
const evens = items.filter((num) => num % 2 === 0);
const multiple = evens.map((num) => num * 4);
const sum = multiple.reduce((a, b) => a + b, 0);
console.log(sum);
// ✅ Good Code ✨
const result = items
.filter((num) => num % 2 === 0)
.map((num) => num * 4)
.reduce((a, b) => a + b, 0);
console.log(result);
Async
// Promise -> Async/await
// ❌ Bad Code 💩
function displayUser() {
fetchUser() //
.then((user) => {
fetchProfile(user) //
.then((profile) => {
updateUI(user, profile);
});
});
}
// ✅ Good Code ✨
async function displayUser() {
const user = await fetchUser();
const profile = await fetchProfile(user);
updateUI(user, profile);
}
Quiz
- 배열의 중복을 제거(Set은 중복 허용하지 않음)
// Remove Duplicates!
const array = ['🐶', '🐱', '🐈', '🐶', '🦮', '🐱'];
console.log(array);
console.log([...new Set(array)]);
'Front-end > Web' 카테고리의 다른 글
[JS] 최신문법 (ES6, ES11) (0) | 2021.08.31 |
---|---|
[JS] 자바스크립트 기초 4. 클래스 | 클래스 예제와 callback함수 정리 (0) | 2021.08.29 |
[JS] 자바스크립트 기초 3. 연산자 | boolean, &&연산자 (0) | 2021.08.29 |
[JS] 자바스크립트 기초 2. 함수 | 함수 정의, 호출, 그리고 callback (0) | 2021.08.28 |
[JS] 자바스크립트 기초1. 변수 | primitive 타입과 object의 차이점 (0) | 2021.08.28 |
댓글