06_Oct_2021 ๐Ÿฐ์—˜๋ฆฌ์Šค AI ํŠธ๋ž™ TIL: ES6 ์ตœ์‹  ๋ฌธ๋ฒ•

์œ ํ™˜์ตยท2021๋…„ 10์›” 7์ผ
0

var -> const & let

const๋Š” ํ•œ ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์—†๋Š” ์ƒ์ˆ˜
let์€ ์„ ์–ธ๊ณผ ๋ณ€๊ฒฝ์ด ์ž์œ ๋กœ์šด ๋ณ€์ˆ˜
const๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ๊ฐ™์€ ์Šค์ฝ”ํ”„(์ค‘๊ด„ํ˜ธ) ๋‚ด์—์„œ ์ค‘๋ณต๋œ ์ด๋ฆ„์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.

//๊ณผ๊ฑฐ ๋ณ€์ˆ˜ ์„ ์–ธ
var a;
var b = 1

//ํ˜„์žฌ ๋ณ€์ˆ˜ ์„ ์–ธ
const c = 2;
let d = 3;
d = 4;

//const ์ƒ์ˆ˜๋Š” ๊ฐ’์„ ์žฌํ• ๋‹น ํ•  ์ˆ˜ ์—†๋‹ค.

์›ฌ๋งŒํ•˜๋ฉด const๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ณ€์ˆ˜์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ์—๋งŒ let์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

Array ๋ฉ”์†Œ๋“œ (forEach, map, filter)

forEach

Array.forEach๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ด์šฉํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
Array.forEach์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ๊ฐ’, ์ธ๋ฑ์Šค, forEach๋ฅผ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค. ๋˜ํ•œ ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋”ฐ๋กœ return์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.

๊ธฐ์กด ์ฝ”๋“œ

var a = [0,1,2,3,4,5];
for(var i = 0; i < a.length; i++) {
	var item = a[i];
    console.log(item)
}

ํ˜„์žฌ ES6

const b = [0,1,2,3,4,5];
b.forEach(function(item){
	console.log(item);
});

map

Array.map์€ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ด์šฉํ•ด ์ˆœ์ฐจ์ ์„ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค. Array.map์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ํ˜„์žฌ๊ฐ’, ์ธ๋ฑ์Šค, map์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค. ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋ฐ˜๋“œ์‹œ ์ƒˆ๋กœ์šด ๊ฐ’์„ return ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.

๊ธฐ์กด ๋ฌธ๋ฒ•

var c = [0,1,2,3,4,5];
var newC = [];
for(var i = 0; i < a.length; i++) {
	var item = c[i];
    newC.push(item*2);
}
// [0,2,4,6,8,10];

ํ˜„์žฌ ES6

const d = [0,1,2,3,4,5];
const newD = d.map(function (item) {
	return item * 2;
});
// [0,2,4,6,8,10];

filter

Array.filter๋Š” ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ด์šฉํ•ด ์ˆœ์ฐจ์ ์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์กฐ๊ฑด์„ ํ†ต๊ณผํ•˜๋Š” ์š”์†Œ๋ฅผ ๋ชจ์•„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.
Array.filter์— ์‹คํ–‰ํ•  ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ๊ฐ’, ์ธ๋ฑ์Šค, map์„ ํ˜ธ์ถœํ•œ ๋ฐฐ์—ด์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›๋Š”๋‹ค. ํ•จ์ˆ˜ ๋‚ด์—์„œ false๋ฅผ returnํ•  ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์—์„œ ์ œ์™ธ๋˜๊ณ  true๋ฅผ returnํ•  ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ์ถ”๊ฐ€๋œ๋‹ค.

๊ธฐ์กด ๋ฌธ๋ฒ•

var c = [0,1,2,3,4,5];
var newC = [];
for (var i = 0; i < a.length; i++) {
	var item = c[i];
    if(item > 3) {
    	newC.push(item);
    }
}

ES6 ๋ฌธ๋ฒ•

const d = [0,1,2,3,4,5];
const newD = d.filter(function(item) {
	return item > 3;
    });

Arrow function

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” function ํ•จ์ˆ˜ ํ‘œํ˜„๋ณด๋‹ค ๊ตฌ๋ฌธ์ด ์งง์€ ํ•จ์ˆ˜ ํ‘œํ˜„์ด๋ฉฐ,
function์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žตํ•˜๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์€ ๋’ค => ๋ฅผ ์จ์ฃผ๋Š” ํ˜•ํƒœ์ด๋‹ค.

//arrow function
const c = (x,y) => {
	console.log(x,y);
};
c(5,6);

const d = (x,y) => console.log(x,y);
d(7,8);

์ค‘๊ด„ํ˜ธ {} ๋ฅผ ์—ด์–ด ๋กœ์ง์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ return ๊ฐ’๋งŒ ์กด์žฌํ•˜๋Š” ์งง์€ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ ์ค‘๊ด„ํ˜ธ์™€ return์„ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ returnํ•  ๊ฐ’์„ ์ž…๋ ฅํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค.

Destructuring assignment

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ํ•ด์ฒดํ•˜์—ฌ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ํ‘œํ˜„์‹์ด๋‹ค.
๊ธฐ์กด์—๋Š” ๊ฐ์ฒด์— ๋‹ด๊ธด ๊ฐ’์„ ๊ฐ๊ฐ ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•˜๊ธฐ ์œ„ํ•ด ์™ผ์ชฝ ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ์œผ๋‚˜, ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น ํ‘œํ˜„์„ ์ด์šฉํ•˜์—ฌ ๋” ๊ฐ„ํŽธํ•˜๊ฒŒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด ๋ฌธ๋ฒ•

var a = {x:1, y:2, z:3}
var x = a.x;
var y = a.y;
var z = a.z;

var c = [1,2,3];
var c0 = c[0];
var c1 = c[1];
var c2 = c[2];

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น

const b = {i:1,j:2,k:3};
const {i,j,k} = b;

const d = [1,2,3];
const [d0,d1,d2] = d;

Shorthand property names

๋‹จ์ถ• ์†์„ฑ๋ช…์„ ์‚ฌ์šฉํ•˜๋ฉด ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์„ ์–ธ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ ์„ ์–ธํ•˜๋Š” ๊ฐ์ฒด์— key๊ฐ’๊ณผ ๋™์ผํ•œ ๋ณ€์ˆ˜๋ช…์„ ๊ฐ€์ง„ ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋ฉด, value ๊ฐ’์„ ์ƒ๋žตํ•ด์„œ ์ ์„ ์ˆ˜ ์žˆ๋‹ค.

const username = 'Alex';
const age = 26;
const school = 'Hansung';
// ๊ธฐ์กด ์ฝ”๋“œ
var person1 = {username: username, age:age, school: school};
// ES6
const person2 = {username, age, school}; //ํ‚ค์™€ ๊ฐ’์ด ๊ฐ™์„๋•Œ๋งŒ ๊ฐ€๋Šฅ

Spread Syntax

์ „๊ฐœ ๊ตฌ๋ฌธ์€ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ์ „๊ฐœํ•  ๋•Œ ์‚ฌ์šฉ. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์•ˆ์— ...์„ ๋ถ™์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐ ์„ ์–ธ, ๋ฐฐ์—ด ์„ ์–ธ, ๊ฐ์ฒด ์„ ์–ธ์‹œ ๋‹ค์–‘ํ•˜๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

const numbers = [1,2,3];
//ํ•จ์ˆ˜
function getSum(...n) {
	let sum = 0;
    n.forEach((item) => {
    	sum += item;
    });
    return sum;
}
//ํ•จ์ˆ˜ ํ˜ธ์ถœ
getSum(...numbers);
//๋ฐฐ์—ด
const newNumbers = [0, ...numbers, 4, 5, 6];

๋‘ ๊ฐ์ฒด๋ฅผ ํ•ฉ์„ฑํ•  ๋•Œ ๊ฒน์น˜๋Š” key๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋‚˜์ค‘์— ์˜ค๋Š” ๊ฐ’์ด ํ• ๋‹น.

const user {name: 'Alex', age = 26, school: 'Hansung'};
const newUser = {...user, grade: 4, age: 27};

Template literals

ํƒฌํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์€ ํ‘œํ˜„์‹์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฌธ์ž์—ด์ด๋‹ค. ๋ฐฑํ‹ฑ(``)์œผ๋กœ ๊ฐ์‹ธ์„œ ๋ฌธ์ž์—ด์„ ํ‘œํ˜„ํ•œ๋‹ค. ๋ฌธ์ž์—ด ๋‚ด์— ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•  ๋•Œ์—๋Š” ${}๋กœ ํ‘œ๊ธฐํ•œ๋‹ค.

//๊ธฐ์กด
const text1 = 'hello' + name
//ES6
const text2 = `Hell**ํ…์ŠคํŠธ**o ${name}`

Optional chaining

์˜ต์…”๋„ ์ฒด์ด๋‹ ์—ฐ์‚ฐ์ž๋Š” ๊ฐ์ฒด๋‚˜ ๋ณ€์ˆ˜์— ์—ฐ๊ฒฐ๋œ ๋‹ค๋ฅธ ์†์„ฑ์„ ์ฐธ์กฐํ•  ๋•Œ ์œ ํšจํ•œ ์†์„ฑ์ธ์ง€ ๊ฒ€์‚ฌํ•˜์ง€ ์•Š๊ณ  ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค. ๋งŒ์•ฝ ์œ ํšจํ•œ ์†์„ฑ์ด ์•„๋‹ ๊ฒฝ์šฐ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  undefined๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋ฐฐ์—ด์˜ ๊ฒฝ์šฐ array?.[index]์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ธฐ์กด ๋ฌธ๋ฒ•

var x;
if(a && a.b && a.b.c) {
	x = a.b.c;
}

ES6

const y = a?.b?.c;

ํ•œ์ค„ ํ‰: ES6 ๋ฌธ๋ฒ• ์ค‘, ์ด๋ฏธ ์˜์‹ํ•˜์ง€ ์•Š๊ณ ๋„ ์ต์ˆ™ํ•˜๊ฒŒ ๋‹ค๋ฃจ์–ด ์˜จ ๊ฒƒ๋“ค๋„ ์žˆ์—ˆ์ง€๋งŒ, ์กด์žฌํ•˜๋Š” ์ง€ ์ธ์ง€ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๋ฌธ๋ฒ•๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์„œ ์œ ์ตํ–ˆ๋‹ค (ํŠนํžˆ, Optional Chaining)

profile
์‚ฌ์šฉ์ž์˜ ํŽธ์˜๋ฅผ ๋” ์ƒ๊ฐํ•˜๊ณ  ํŽธ์•ˆํ•œ UI/UX ๊ฐœ๋ฐœ์„ ๊ฟˆ๊พธ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž ์ง€๋ง์ƒ์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€