const๋ ํ ๋ฒ ์ ์ธํ๋ฉด ๊ฐ์ ๋ฐ๊ฟ ์ ์๋ ์์
let์ ์ ์ธ๊ณผ ๋ณ๊ฒฝ์ด ์์ ๋ก์ด ๋ณ์
const๋ก ์ ์ธ๋ ๋ณ์๋ ๊ฐ์ ์ค์ฝํ(์ค๊ดํธ) ๋ด์์ ์ค๋ณต๋ ์ด๋ฆ์ ๊ฐ์ง ์ ์๋ค.
//๊ณผ๊ฑฐ ๋ณ์ ์ ์ธ
var a;
var b = 1
//ํ์ฌ ๋ณ์ ์ ์ธ
const c = 2;
let d = 3;
d = 4;
//const ์์๋ ๊ฐ์ ์ฌํ ๋น ํ ์ ์๋ค.
์ฌ๋งํ๋ฉด const๋ฅผ ์ฌ์ฉํ๊ณ , ๋ณ์์ ๋ณ๊ฒฝ์ด ํ์ํ ๋์๋ง let์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
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); });
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];
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; });
ํ์ดํ ํจ์๋ 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ํ ๊ฐ์ ์ ๋ ฅํ ์ ๋ ์๋ค.
๊ตฌ์กฐ ๋ถํด ํ ๋น์ ๊ฐ์ฒด๋ ๋ฐฐ์ด์ ํด์ฒดํ์ฌ ๊ฐ๋ณ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํ๋ ํํ์์ด๋ค.
๊ธฐ์กด์๋ ๊ฐ์ฒด์ ๋ด๊ธด ๊ฐ์ ๊ฐ๊ฐ ์๋ก์ด ๋ณ์๋ก ์ ์ธํ๊ธฐ ์ํด ์ผ์ชฝ ์์์ ๊ฐ์ด ์์ฑํ์ผ๋, ๊ตฌ์กฐ ๋ถํด ํ ๋น ํํ์ ์ด์ฉํ์ฌ ๋ ๊ฐํธํ๊ฒ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค.
๊ธฐ์กด ๋ฌธ๋ฒ
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;
๋จ์ถ ์์ฑ๋ช ์ ์ฌ์ฉํ๋ฉด ์๋ก์ด ๊ฐ์ฒด ์ ์ธ์ ๊ฐํธํ๊ฒ ํ ์ ์๋ค. ์๋ก ์ ์ธํ๋ ๊ฐ์ฒด์ 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}; //ํค์ ๊ฐ์ด ๊ฐ์๋๋ง ๊ฐ๋ฅ
์ ๊ฐ ๊ตฌ๋ฌธ์ ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด๋ฅผ ์ ๊ฐํ ๋ ์ฌ์ฉ. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด์ด๋ ๊ฐ์ฒด์์ ...์ ๋ถ์ฌ ์ฌ์ฉํ๋ค. ํจ์ ํธ์ถ ๋ฐ ์ ์ธ, ๋ฐฐ์ด ์ ์ธ, ๊ฐ์ฒด ์ ์ธ์ ๋ค์ํ๊ฒ ํ์ฉํ ์ ์๋ค.
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};
ํฌํ๋ฆฟ ๋ฆฌํฐ๋ด์ ํํ์์ ํ์ฉํ๋ ๋ฌธ์์ด์ด๋ค. ๋ฐฑํฑ(``)์ผ๋ก ๊ฐ์ธ์ ๋ฌธ์์ด์ ํํํ๋ค. ๋ฌธ์์ด ๋ด์ ํํ์์ ์ฌ์ฉํ ๋์๋ ${}๋ก ํ๊ธฐํ๋ค.
//๊ธฐ์กด const text1 = 'hello' + name //ES6 const text2 = `Hell**ํ ์คํธ**o ${name}`
์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์๋ ๊ฐ์ฒด๋ ๋ณ์์ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ์์ฑ์ ์ฐธ์กฐํ ๋ ์ ํจํ ์์ฑ์ธ์ง ๊ฒ์ฌํ์ง ์๊ณ ๊ฐ์ ์ฝ์ ์ ์๋๋ก ํด์ค๋ค. ๋ง์ฝ ์ ํจํ ์์ฑ์ด ์๋ ๊ฒฝ์ฐ ์๋ฌ๋ฅผ ๋ฐ์์ํค์ง ์๊ณ 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)