TIL_30_with Wecode 020 JavaScript about [es6] arrow function

JIEUNยท2021๋…„ 2์›” 23์ผ
0
post-thumbnail

๐ŸŽ… ES6 = ECMA Script 2015
ES๋Š” ECMA Script์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ECMA Script๋Š” JavaScript๋ฅผ ํ‘œ์ค€ํ™” ์‹œํ‚ค๋ ค๊ณ  ํƒ„์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.(ECMAScript (or ES) is a scripting-language specification standardized by Ecma International)
๐Ÿงœโ€โ™‚๏ธ arrow function

//ES5
function() {}
//ES6
() => {}

์ด๋ฆ„์ด ์—†๋Š” ํ•จ์ˆ˜์˜ ๊ธฐ๋ณธ์ ์ธ ํ‘œํ˜„์ž…๋‹ˆ๋‹ค.
ES6์—์„œ๋Š” function์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๊ฐ€ ๋น ์ง€๊ณ  ์†Œ๊ด„ํ˜ธ๋งŒ ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  =>(arrow) ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฆ„์ด ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

//ES5
function getName() {}
//ES6
const getName = () => {}
getName() //ํ˜ธ์ถœํ•  ๋•Œ. ๋‘˜ ๋‹ค ๊ฐ™์Œ

์‚ฌ์‹ค function(ํ•จ์ˆ˜)๋Š” ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํ•˜๋‚˜์˜ ์‹์ž…๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ES5 ์ผ ๋•Œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

//ES5
//Function Declaration
function getName() {}
//ES5
//Function Expression
const getName = function() {}

์ธ์ž๋„ ํ•œ ๋ฒˆ ๋ฐ›์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

//ES5
const getName = function(name) {} //์ธ์ž๊ฐ€ ํ•œ ๊ฐœ์ธ ๊ฒฝ์šฐ
//ES6
const getName = (name) => {}
const getName = name => {} //์ธ์ž๊ฐ€ ํ•œ ๊ฐœ์ธ ๊ฒฝ์šฐ

์ธ์ž๊ฐ€ ํ•˜๋‚˜์ผ ๋•Œ๋Š” ์†Œ๊ด„ํ˜ธ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ธ์ž๊ฐ€ ๋‘ ๊ฐœ์ผ ๋•Œ๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

//ES5
const getName = function(name, age) {} //์ธ์ž๊ฐ€ ๋‘ ๊ฐœ์ธ ๊ฒฝ์šฐ
//ES6
const getName = (name, age) => {} //์ธ์ž๊ฐ€ ๋‘ ๊ฐœ์ธ ๊ฒฝ์šฐ

์ด์ œ returnํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋ณผ๊นŒ์š”?

//ES5
function hi(text) {
  text += 'ํ•˜์„ธ์š”';
  return text;
}
//ES6
const hi = text => { 
  text += 'ํ•˜์„ธ์š”';
  return text 
};

๋งŒ์•ฝ ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋‚ด์šฉ์ด ๋”ฑํžˆ ์—†์ด return๋งŒ ํ•œ๋‹ค๋ฉด return ํ‚ค์›Œ๋“œ์™€ ์ค‘๊ด„ํ˜ธ๊ฐ€ ์ƒ๋žต๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

//ES5
function getName(name) {
  return name;
}
//ES6
const hi = name => { return name };
const hi = name => name; //์ค‘๊ด„ํ˜ธ ์ƒ๋žต ๊ฐ€๋Šฅ

์ค‘๊ด„ํ˜ธ์™€ return๋ฌธ์ด ์ƒ๋žต๋  ๊ฒฝ์šฐ, ํ™”์‚ดํ‘œ ์˜ค๋ฅธ์ชฝ์—๋Š” ๋ฆฌํ„ด๋  "๊ฐ’"๋งŒ ์“ฐ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด๊ฐ€๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

//ES5
function getFullName(first, family) {
  return first + family;
}
//ES6
const hi = (first, family) => { return first + family };
const hi = (first, family) => first + family; 
//๋ฆฌํ„ด ์ƒ๋žต, ๋ฆฌํ„ด ๋  ๊ฐ’๋งŒ ์จ์•ผ ํ•จ!

๐Ÿงœโ€โ™‚๏ธ Assignment
์ด๋ฒˆ assignment๋Š” ์ž๋™์ฑ„์ ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ž‘์„ฑํ•ด์„œ ์ œ์ถœํ•˜๋ฉด ์ฑ„์ ํ•ด๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.
1. ์™ผ์ชฝ ์ฝ”๋“œ์ฐฝ์—์„œ function์„ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜ํ‘œํ˜„๋ฒ•์„ ES6 ํ‘œํ˜„์„ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”.
2. ์™ผ์ชฝ ์ฝ”๋“œ์ฐฝ์—์„œ ES6์˜ ํ•จ์ˆ˜ ํ‘œํ˜„์„ function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฐ”๊ฟ”์ฃผ์„ธ์š”.

// function ์‚ฌ์šฉ
function welcome(name){
  return "์•ˆ๋…•ํ•˜์„ธ์š”" + name
}
// ์•„๋ž˜์—์„œ ๋ณ€ํ™˜ํ•ด์ฃผ์„ธ์š”!
const welcome = name => {
  return "์•ˆ๋…•ํ•˜์„ธ์š”" + name
}
welcome("์ง€์€์ด");
// ES6
const handleBio = (nickname, bio) =>  {
  const user = {
    nickname : nickname,
    bio : bio,
  }
   return user;
}
// ์•„๋ž˜์—์„œ ๋ณ€ํ™˜ํ•ด์ฃผ์„ธ์š”!
function handleBio(nickname, bio) {
  const user = {
    nickname : nickname,
    bio : bio,
  } 
  return user;
}

0๊ฐœ์˜ ๋Œ“๊ธ€