ESλ ECMAScriptμ μ½μμ΄λ©° μλ°μ€ν¬λ¦½νΈμ νμ€,κ·κ²©μ λνλ΄λ μ©μ΄μ΄λ©°
6λ λ²μ μ λ»νλ©° 2015λ
μ μΆμ λμλ€! 그리νμ¬ ECMAScript 2015λ‘λ μλ €μ Έ μλ€!
μμ£Ό μ¬μ©λλ ES6μ μ
λ°μ΄νΈ λ κΈ°λ₯μ λν΄ μμ보μ!
let : λ³μ μ μΈ ν€μλλ μ¬μ μΈμ λΆκ°λ₯ νμ§λ§ μ¬ν λΉμ΄ κ°λ₯ν ν€μλ
const : μμ μ μΈ ν€μλλ‘ μ¬μ μΈκ³Ό μ¬ν λΉμ΄ λΆκ°λ₯νλ€ μ¦, κ°μ²΄μ ν¨κ» μ¬μ©ν λλ₯Ό μ μΈνκ³ λ λ³κ²½ λΆκ°λ₯ν λ³μ
let, const : λΈλ‘μ€μ½νλ₯Ό κ°μ§κ³ μλ€.
μμ²λΌ letκ³Ό const ν€μλμ λ±μ₯μΌλ‘ κΈ°μ‘΄ var ν€μλλ§ μ‘΄μ¬νμλ λ³΄λ€ μμΈ‘ κ°λ₯ν μ½λλ₯Ό μμ± ν μ μκ² λμλ€
ν
νλ¦Ώ 리ν°λ΄μ λ¬Έμμ΄μ μ°κ²°νκΈ° μν΄ + μ°μ°μλ₯Ό μ¬μ©ν νμκ° μκ³
λ°±ν±(`)μ μ¬μ©νμ¬ λ¬Έμμ΄ λ΄μμ λ³μλ₯Ό μ¬μ©ν μλ μλ€.
// μ μ© μ
function template_literals(str1,str2) {
return 'ν
νλ¦Ώ ' + str1 + ' μ΄λ κ²' + str2;
}
// μ μ© ν
function template_literals(str1,str2) {
return `ν
νλ¦Ώ ${str1} μ΄λ κ² ${str2}`
}
console.log(template_literals('리ν°λ΄','μ¬μ©ν΄')) // 'ν
νλ¦Ώ 리ν°λ΄ μ΄λ κ² μ¬μ©ν΄'
ν¨μ ννμμ νμ΄ν ν¨μλ‘ ννν μ μμΌλ©°
ν¨μλ₯Ό κ°κ²°νκ² λνλΌ μ μκ²λμ΄ κ°λ
μ±μ΄ μ¬λΌκ°λ€
// μ μ© μ
function arrow(){
return 'λλ νμ΄ν ν¨μ'
}
// μ μ© ν
const arrow = () => {
return 'λλ νμ΄ν ν¨μ'
}
// νμ΄ν ν¨μ μ¬μ© μ returnλ§ μλ κ²½μ° μλ΅ κ°λ₯
const arrow = () => 'λλ νμ΄ν ν¨μ'
맀κ°λ³μλ₯Ό μ°Ύμ μ μμλ κΈ°λ³Έ 맀κ°λ³μλ₯Ό μ¬μ©νλ©΄
맀κ°λ³μκ° μ μ λμ§ μμμ΄λ ν΄λΉ κ°μΌλ‘ μ¬μ© κ°λ₯νλ€
// μ μ© μ
function template_literals(str1,str2) {
return `ν
νλ¦Ώ ${str1} μ΄λ κ² ${str2}`
}
console.log(template_literals('리ν°λ΄')) // 'ν
νλ¦Ώ 리ν°λ΄ μ΄λ κ² undefined'
// μ μ© ν
function template_literals(str1,str2 = 'μ¬μ©ν΄') {
return `ν
νλ¦Ώ ${str1} μ΄λ κ² ${str2}`
}
console.log(template_literals('리ν°λ΄')) // 'ν
νλ¦Ώ 리ν°λ΄ μ΄λ κ² μ¬μ©ν΄'
ꡬ쑰 λΆν΄ ν λΉμ΄λ νΌμΉλ€λ λ»μΌλ‘ κ°μ²΄λ λ°°μ΄μμ μ¬μ©νλ©°
κ°μ ν΄μ²΄ν ν κ°λ³ κ°μ λ³μμ μλ‘ ν λΉνλ κ³Όμ μ λ§νλ€.
// λ°°μ΄
const arr = [1, 2, 3];
const [one, two, three] = arr;
one // 1
two // 2
three // 3
// κ°μ²΄
const obj = {
name : 'μ² μ',
age : 22
};
const {name, age} = obj;
name // 'μ² μ'
age // 22
κΈ°μ‘΄ λΉλκΈ° μ²λ¦¬λ μ½λ°± ν¨μλ₯Ό μ¬μ©νμ¬ μ²λ¦¬νμλλ° μ½λ°±μ΄ λ°λ³΅ λλ€λ³΄λ μ½λ°±ν¬μ μ λ°μμΌ°λ€
μ΄λ₯Ό λ체νκΈ° μν΄ Promiseκ° λμ
λμκ³ Promise νμμ²λ¦¬ λ©μλλ₯Ό ν΅ν΄ API μ¬μ© μ νΈλ¦¬νκ² μ¬μ© κ°λ₯νλ€
λ μμΈν μ½λμ μ€λͺ
μ μλ λ§ν¬λ₯Ό μ°Έμ‘° λ°λλλ€
Promise ν¬μ€ν
classλ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP)μ ν΅μ¬μ΄κ³ μ½λλ₯Ό λμ± μμ νκ² μΊ‘μν ν μ μμ΅λλ€
νμ§λ§ μλ°μ€ν¬λ¦½νΈλ νλ‘ν νμ
κΈ°λ°μ κ°μ²΄ μ§ν₯ μΈμ΄μ΄λ€.
κ·Έλμ λμ
λκ² class ν€μλλ€
class myClass {
constructor(name, age) {
this.name = name;
this.age = age;
}
}
const user = new myClass('μν¬', 22);
console.log(user.name); // μν¬
console.log(user.age); // 22
// μμ μ μ© μ
class myClass {
constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`μλ
${this.name} λμ λμ΄λ ${this.age}μ΄μ΄λ€`);
}
}
// myClass λ©μλ λ° μμ± μμ
class UserProfile extends myClass {
userName() {
console.log(this.name);
}
}
const profile = new UserProfile('μν¬', 22);
profile.sayHello(); // μλ
μν¬ λμ λμ΄λ 22μ΄μ΄λ€.
profile.userName(); // μν¬
ν¬ν¨λμ΄μλμ§(includes), μμνλμ§(startsWith), λλλμ§(endsWith)
boolean νμ
μ return ν΄μ€λ€.
const str = 'Hello World Hanamon';
str.includes("Hana"); // true
str.startsWith("Hello"); // true
str.endsWith("mon"); // true