2023. 7. 29. 13:24ใ2. JS๋ฌธ๋ฒ ์ข ํฉ
ECMAScript 6 (ES6)๋ JavaScript์ ๋ฒ์ ์ค ํ๋๋ก, 2015๋ ์ ๋ฐํ๋์๋ค.
ES6๋ ์ด์ ๋ฒ์ ์ธ ES5์์ ์๋ก์ด ๋ฌธ๋ฒ๊ณผ ๊ธฐ๋ฅ์ ๋์ ํ์ฌ JavaScript ๊ฐ๋ฐ์๋ค์ด ๋ณด๋ค ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๊ฐ์ ํ์๋ค.
( ์ด๋ฐ ์ด์ ๋ก, 2015๋ ๋์ ๋๊ท๋ชจ ๋ฌธ๋ฒ์ ํฅ์ ๋ฐ ๋ณ๊ฒฝ์ด ์์๋ค๊ณ ํ๋ค ! )
- let, const : ๊ธฐ์กด์ ๋ณ์ ์ ์ธ์ ์ํด ์กด์ฌํ๋ var๋ฅผ ๋์ฒดํด์ ๋์จ ๋ณ์ ์ ์ธ์ ์ฌ์ฉ ๋๋ ํค์๋.
์ ์ธ: ๋ณ์๋ช ์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์๋ฆฌ๋ ๊ฒ
ํ ๋น: ๋ณ์์ ๊ฐ์ ์ ์ฅํ๋ ๊ฒ (= ํ ๋น์ฐ์ฐ์)
1. let : ์ฌํ ๋น์ ๊ฐ๋ฅํ๊ณ , ์ฌ์ ์ธ์ ๋ถ๊ฐ๋ฅ
let value = "value1"
console.log(value) // value1
value = "value2" // ์ฌํ ๋น ๊ฐ๋ฅ
console.log(value) // value2
let value = "value3" // ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ, SyntaxError: Identifier 'value' has already been declared
2. const : ์ฌํ ๋น, ์ฌ์ ์ธ์ด ๋ถ๊ฐ๋ฅ, ์ด๊ธฐ๊ฐ์ด ์์ผ๋ฉด ์ ์ธ ๋ถ๊ฐ๋ฅ.
const value; // ์ด๊ธฐ๊ฐ ์์ด ์ ์ธ ๋ถ๊ฐ๋ฅ, SyntaxError: Missing initializer in const declaration
---
const value = "value1"
console.log(value) // value1
value = "value2" // ์ฌํ ๋น ๋ถ๊ฐ๋ฅ, TypeError: Assignment to constant variable.
const value = "value2" // ์ฌ์ ์ธ ๋ถ๊ฐ๋ฅ, SyntaxError: Identifier 'value' has already been declared
* (์ฐธ์กฐ) var : ์ฌํ ๋น, ์ฌ์ ์ธ์ด ๊ฐ๋ฅ.
var name = "name1"
console.log(name) // name1
var name = "name2"
console.log(name) // name2
- ํ์ดํํจ์ (Arrow Function) : funtion์ด๋, returnํค์๋ ์์ด ํจ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ. ES6์์ ์ฒ์ ์๊ฐ๋ ๊ฐ๋ ์ด๋ค.
// ES5
function func() {
return true
}
//ES6
const func = () => true
const func = () => {
return true
}
() => {}
parm => {}
(parm1, parm2, ...parms) -> {}
// ์ต๋ช
ํ์ดํ ํจ์
() => {}
* function์ ํธ์ถ์ ํ ๋ this๊ฐ ์ ํด์ง์ง๋ง, ํ์ดํ ํจ์๋ ์ ์ธํ ๋ this๊ฐ ์ ํด์ง๋ค.
- ์ผํญ ์ฐ์ฐ์ (ternary operator)
condition ? expr1 : expr2
console.log(true ? "์ฐธ" : "๊ฑฐ์ง") // ์ฐธ
console.log(false ? "์ฐธ" : "๊ฑฐ์ง") // ๊ฑฐ์ง
- ๊ตฌ์กฐ ๋ถํด ํ ๋น (Destructuring) : ๋ฐฐ์ด[]์ด๋ ๊ฐ์ฒด{}์ ์์ฑ์ ๋ถํดํด์ ๊ทธ ๊ฐ์ ๋ณ์์ ๋ด์ ์ ์๊ฒ ํด์ฃผ๋ ๋ฌธ๋ฒ.
1) ๋ฐฐ์ด์ ๊ฒฝ์ฐ
// ๋ฐฐ์ด์ ๊ฒฝ์ฐ
let [value1, value2] = [1, "new"];
console.log(value1); // 1
console.log(value2); // "new"
let arr = ["value1", "value2", "value3"];
let [a,b,c] = arr;
console.log(a,b,c) // value1 value2 value3
// let [a,b,c] = arr; ์ ์๋์ ๋์ผ!
// let a = arr[0];
// let b = arr[1];
// let c = arr[2];
let [a,b,c,d] = arr
console.log(d) // undefined
let [a,b,c,d = 4] = arr
console.log(d) // 4

๊ตฌ์กฐ๋ถํดํ ๋น 'Destructuring'
= de + structure + ing
de = not ๊ทธ๋ฆฌ๊ณ , structure = ๊ตฌ์กฐ๋ฅผ ์๋ฏธ
ํด์ํ์๋ฉด, ๋ฐฐ์ด(๋๊ดํธ ์์ ํ๋ํ๋)๋ฅผ ๊ฐ์ฒด์ ์์ฑ(์ค๊ดํธ ์์ ํ๋ํ๋) ๋ณ์์ ๋ด์ ์ ์๊ฒ ํด์ค๋ค ์ ๋๋ก ๋ ๊ฒ ๊ฐ๋ค.
๋ฐ๋ผ ์ผ์ชฝ์ ์์์ ๊ฐ์ด ๊ฐ์ด value์ 1,๊ณผ new์ ๊ฐ์ ์ถ๋ ฅ ์ํฌ ์ ์๋ค.




์ ์์๋ arr๋ก ์งํํ ์์ -
2) ๊ฐ์ด ์์๊ฒฝ์ฐ undefind๊ฐ ์ถ๋ ฅ๋๋ค. ( ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ด ์์๊ฒฝ์ฐ null / undefind ๋๊ฐ์ง๋ก ์ถ๋ ฅ๋๋, null๊ฐ์๊ฐ๋ฐ์๊ฐ ์ง์ ์ค์ ํด์ผํจ. )
3) ์ด๊ธฐ๊ฐ์ ์ค์ ํ์ฌ ์ถ๋ ฅ๋๋๋ก ํ ์ ์๋ค.
4 ) value4 ๋ฅผ ์ง์ ํด ๋์ผ๋ฉด, ์ด๊ธฐ๊ฐ์ด ์๋ value4๋ก ์ถ๋ ฅ๋๋ค.
2) ๊ฐ์ฒด์ ๊ฒฝ์ฐ
// ๊ฐ์ฒด์ ๊ฒฝ์ฐ
let user = {name: "nbc", age: 30};
let {name, age} = user;
// let name = user.name;
// let age = user.age;
console.log(name, age) // nbc 30

3) ์๋ก์ด ์ด๋ฆ์ผ๋ก ํ ๋น
// ์๋ก์ด ์ด๋ฆ์ผ๋ก ํ ๋น
let {name: newName, age: newAge} = user;
console.log(name, age) // ReferenceError: name is not defined
console.log(newName, newAge) //nbc 30
let {name, age, birthDay} = user;
console.log(birthDay) // undefined
let {name, age, birthDay = "today"} = user;
console.log(birthDay) // today



