๐ก Arrow function์ด๋?ํ์ดํ ํจ์๋ ES6๋ฌธ๋ฒ์ด๋ค.function ํค์๋ ์ฌ์ฉํด์ ํจ์๋ฅผ ๋ง๋ ๊ฒ๋ณด๋ค ๊ฐ๋จํ ํจ์๋ฅผ ํํํ ์ ์์ผ๋ฉฐ, ํ์ดํ ํจ์๋ ํญ์ ์ต๋ช ์ด๋ค.
// function ํจ์
var fun = function () {
console.log("fun")
}; // fun
// ํ์ดํ ํจ์
var arrow = () => {
console.log("arrow");
};
arrow()// arrow
// ๋งค๊ฐ๋ณ์๊ฐ ์๋ ๊ฒฝ์ฐ
var arrow = () => console.log('app');
arrow(); // app
// ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ธ ๊ฒฝ์ฐ, ์๊ดํธ๋ฅผ ์๋ตํ ์ ์๋ค.
// ๊ฐ๋จํ๊ฒ ํ์ค๋ก ํํํ ๋ "{}" ์์ด ๊ฐ์ด ๋ฐํ๋๋ค.
var arrow = x => x;
arrow('app'); // app
// ๋งค๊ฐ๋ณ์๊ฐ ์ฌ๋ ค๊ฐ์ธ ๊ฒฝ์ฐ, ์๊ดํธ๋ฅผ ์๋ตํ ์ ์๋ค.
// ๊ฐ๋จํ๊ฒ ํ์ค๋ก ํํํ ๋ "{}" ์์ด ๊ฐ์ด ๋ฐํ๋๋ค.
var arrow = (a, b) => a + b;
arrow(1, 2); // 3
// "{}"๊ฐ ๋ฃ๊ณ ์ถ๋ค๋ฉด return์ ์จ์ค์ผํ๋ค.
var arrow = (a, b) => { return a + b };
arrow(1, 2); // 3
// "{}" ์ฌ์ฉ ์, return์ด ์์ ๋
var arrow = (a, b) => { a + b };
arrow(1, 2); // undefined
// ์ฌ๋ฌ์ค ์ผ์ ๋
var arrow = (a, b) => {
var c = 3;
return a + b + c;
}
arrow(1, 2, 3) // 6
// ๊ฐ์ฒด๋ฅผ ๋ฐํํ ๋
var arrow = () => ( { a: 1, b: 2, c: 3 } );
arrow(); // { a: 1, b: 2, c: 3 };
"{}"๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ์ ๋ฐํํ ๋ return์ ์ฌ์ฉํด์ผํ๋ค."{}"๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด undefied๋ฅผ ๋ฐํํ๋ค."{}"์ ์ฌ์ฉํ ๋๋ ์ฌ๋ฌ์ค์ ์ผ์ ๋ ์ฌ์ฉํ๋ค.
์ฐ๋ฆฌ๋ Javascript๋ผ๋ ์ธ์ด๋ก ๋ก์ง์ ๊ตฌํํ ๋ 'callback'์ด๋ผ๋ ๋จ์ด๋ฅผ ํ๋ฒ์ฏค์ ๋ค์ด๋ดค์ ๊ฒ์ด๋ค.
๐กย callback์ด๋?์ด๋ค ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ ํ, ์ํ๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.์ฝ๊ฒ ๋งํด, ์ด๋ค ์ผ์ ๋ค๋ฅธ ๊ฐ์ฒด์๊ฒ ์ํค๊ณ , ๊ทธ ์ผ์ด ๋๋๋ ๊ฒ์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๋๋๊ณ ๋ถ๋ฅผ ๋๊น์ง ๋ค๋ฅธ ์ผ์ ํ๋ ๊ฒ์ ๋งํ๋ค.๐๊ทธ๋ ๊ธฐ ๋๋ฌธ์ non-block์ด๋ฉฐ, ๋น๋๊ธฐ ๋ฐฉ์์ ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
function first(a,b,callback){
let v=a*b;
callback(v);
}
first(1,2,function(v){
console.log(v); //2
})
๊ฒฐ๊ณผ ๊ฐ์ 2(1*2)๊ฐ ๋๋ค.๋ง์ฝ node.js๋ฅผ ์ฐ๋ฉด์ ์ฝ๋ฐฑ์ ๋ฐ์์ผ ํ๋ ์ํฉ์ callback ํจ์๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ฝ๋ฐฑ ํจ์์ ๊ณผ์ ์ด ๋๋๊ธฐ ์ ์ ๋ค์ ํ๋ก์ธ์ค๊ฐ ์งํ๋ ์ ์๋ค.
์ด๋ฌํ ์ํฉ๋ค์ ๋ง๊ณ ์ฐจ๋ก๋๋ก ์ํํ๊ธฐ ์ํด callback ํจ์๋ฅผ ์ฌ์ฉํด ํ๋ค.