Arrow function expression (โ‡’)

  • function ํ‘œํ˜„์— ์งง๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ๊ณผ ์ž์‹ ์˜ this, arguments, super ๋˜๋Š” new.target์„ ๋ฐ”์ธ๋”ฉ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Arrow function๋Š” ํ•ญ์ƒ ์ต๋ช…์ž…๋‹ˆ๋‹ค.
  • ECMAScript6๋ถ€ํ„ฐ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

ํ‘œ๊ธฐ๋ฒ•

(param1, param2, โ€ฆ, paramN) => { statements }
(param1, param2, โ€ฆ, paramN) => expression
// ๋‹ค์Œ๊ณผ ๋™์ผํ•จ:  => { return expression; }
 
// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜๋ฟ์ธ ๊ฒฝ์šฐ ๊ด„ํ˜ธ๋Š” ์„ ํƒ์‚ฌํ•ญ:
(singleParam) => { statements }
singleParam => { statements }
 
// ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ํ•จ์ˆ˜๋Š” ๊ด„ํ˜ธ๊ฐ€ ํ•„์š”:
() => { statements }
 
// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์‹์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ณธ๋ฌธ(body)์„ ๊ด„ํ˜ธ ์†์— ๋„ฃ์Œ:
params => ({foo: bar})
 
// ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๊ธฐ๋ณธ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ง€์›๋จ
(param1, param2, ...rest) => { statements }
(param1 = defaultValue1, param2, โ€ฆ, paramN = defaultValueN) => { statements }
 
// ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก ๋‚ด ๋น„๊ตฌ์กฐํ™”๋„ ์ง€์›๋จ
var f = ([a, b] = [1, 2], {x: c} = {x: a + b}) => a + b + c;
f();  // 6

์˜ˆ์ œ ์ฝ”๋“œ

var a = [
  "Hydrogen",
  "Helium",
  "Lithium",
  "Berylยญlium"
];
 
var a2 = a.map(function(s){ return s.length });
 
var a3 = a.map( s => s.length );

async

  • AsyncFunction object์„ Returnํ•˜๋Š” function ์•ž์— ๋ช…์‹œํ•˜๋Š” ๊ฒƒ์ด๋‹ค.
  • async function์€ await๋ผ๋Š” ํ‘œํ˜„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
  • await๋ฅผ ํ†ตํ•ด async๋Š” ๋Œ€๊ธฐํ•˜๊ณ  promise๋ฅผ ๋ฐ›์€ ์ดํ›„์— ์‹คํ–‰๋œ๋‹ค.

ํ‘œ๊ธฐ๋ฒ•

async function name([param[, param[, ... param]]]) {
   statements
}

์˜ˆ์ œ ์ฝ”๋“œ

function Task1() {
    return new Promise((resolve, reject) => {
            setTimeout(() => {
                console.log('Task 1');
                resolve('TASK1 RESULT');
            }, 1000);
    });
}
 
 
function Task2(arg1, arg2) {
    return new Promise( (resolve, reject) => {
        const result = arg1 + arg2;
        setTimeout(()=>{
            resolve(result);
        }, 1000);
    });
}
 
async function doIt() {
    try {
        let r1 = await Task1();
        let r2 = await Task1();
        let sum = await addTask(r1, r2);
        console.log('Random Numbers : ', r1, r2);
        console.log('Sum =', sum);
    } catch (error) {
        console.log('Task Failure', error);
    }
}
 
doIt();

Reference