[ JavaScript ๋ฌธ๋ฒ• ์ข…ํ•ฉ๋ฐ˜ 2์ฃผ์ฐจ (1)] ES6๋ฌธ๋ฒ•, ๊ตฌ์กฐ๋ถ„ํ•ดํ• ๋‹น

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์˜ ๊ฐ’์„ ์ถœ๋ ฅ ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.

 

 

 

 

 

 

 

 

 

 


์™ผ์ชฝ๋ถ€ํ„ฐ ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ์ด๋ฏธ์ง€ 1-2-3-4

์œ„ ์˜ˆ์‹œ๋Š” 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