05-3. Arrow function

ν™”μ‚΄ν‘œ ν•¨μˆ˜(Arrow function)

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” ES6λ¬Έλ²•μž…λ‹ˆλ‹€. function ν‚€μ›Œλ“œ μ‚¬μš©ν•΄μ„œ ν•¨μˆ˜λ₯Ό λ§Œλ“  것보닀 κ°„λ‹¨νžˆ ν•¨μˆ˜λ₯Ό ν‘œν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” 항상 읡λͺ…μž…λ‹ˆλ‹€.

1. ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ 기본문법

// λ§€κ°œλ³€μˆ˜κ°€ μ—†λŠ” 경우
const foo = () => console.log('bar');
foo(); // bar

// λ§€κ°œλ³€μˆ˜κ°€ ν•˜λ‚˜μΈ 경우 (κ°€λ‘œκ°€ ν•„μš” μ—†λ‹€.)
const foo = x => x;
foo('bar'); // bar

// λ§€κ°œλ³€μˆ˜κ°€ μ—¬λ €κ°œμΈ 경우 (κ°€λ‘œκ°€ ν•„μš” ν•©λ‹ˆλ‹€.)
const foo = (a, b) => a + b; // κ°„λ‹¨ν•˜κ²Œ ν•œμ€„λ‘œ ν‘œν˜„ν•  땐 "{}" μ—†μœΌλ©΄ 값이 λ°˜ν™˜(retuen)λ©λ‹ˆλ‹€.!!
foo(1, 2); // 3

const foo = (a, b) => { return a + b }; 
foo(1, 2); // 3

const foo = (a, b) => { a + b }; // "{}"λ₯Ό μ‚¬μš©ν–ˆλŠ”λ° return이 없을 λ•Œ 
foo(1, 2); // undefined

const foo = (a, b, c = 0) => { // μ—¬λŸ¬μ€„ 썼을 경우 
	return a + b + c;
}
foo(1, 2, 3) // 6

// μ¦‰μ‹œμ‹€ν–‰ν•¨μˆ˜λŠ” μ•„λž˜μ™€ 같이 ν‘œν˜„ν•  수 μžˆλ‹€.
(() => {
  console.log('foo');
})(); // foo

/*
1) "{}"을 μ‚¬μš©ν•  λ•ŒλŠ” μ—¬λŸ¬μ€„μ„ 썼을 λ•Œ μ‚¬μš©ν•©λ‹ˆλ‹€.
2) "{}"λ₯Ό μ‚¬μš©ν•˜λ©΄ 값을 λ°˜ν™˜ν•  λ•Œ return을 μ‚¬μš©ν•΄μ•Όν•©λ‹ˆλ‹€.
3) κ°„λ‹¨ν•˜κ²Œ ν•œμ€„λ‘œ ν‘œν˜„ν•  땐 "{}" μ—†μœΌλ©΄ 값이 λ°˜ν™˜(retuen)λ©λ‹ˆλ‹€.!!
4) "{}"λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ©΄ undefiedλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.
*/

// 객체λ₯Ό λ°˜ν™˜(return)ν•  λ•Œ
const foo = () => ( { a: 1, b: 2, c: 3 } );
foo(); // { a: 1, b: 2, c: 3 };

2. 콜백 ν•¨μˆ˜μ—μ„œ μ‚¬μš©ν•˜κΈ°

// ES5
var numbers = [1, 4, 9];
var oddArr = numbers.filter(function (x) { return x % 2 !== 0;});
console.log(oddArr); // [1, 9]
// ES6
var numbers = [1, 4, 9];
var oddArr = numbers.filter( x => (x % 2) !== 0 );
console.log(oddArr); // [1, 9]

Last updated