๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‘ฉ‍๐Ÿ’ป ๊ฐœ๋ฐœ ๊ณต๋ถ€/ํ•œ๊ฒฝxํ† ์Šค ๋ถ€ํŠธ์บ ํ”„(Fullstack)

[ํ•œ๊ฒฝxToss] ๐ŸŒ์ถ”๊ฐ€๊ณต๋ถ€) Javascript ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์žฅ์  / arrow function ์‚ฌ์šฉ ์ด์œ 

728x90

 

ES6 ๋ฌธ๋ฒ• ์ดํ›„๋ถ€ํ„ฐ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ๋“ฑ์žฅํ–ˆ๋‹ค

 

๊ถ๊ธˆํ•œ ๊ฒƒ :

์™œ JS์—์„œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•˜๋Š”๊ฑธ๊นŒ? ์™œ ? WHY/ ??

 


1. ํ•จ์ˆ˜ํ˜• ๋ณ€์ˆ˜

 

const apple = 1000; // ๋ณ€์ˆ˜
const add = (a, b) => a + b; // ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
console.log(add(2, 3)); // 5

 

์‚ฌ์šฉ์ด ์ง๊ด€์ ์ด๋‹ค.

๋ณ€์ˆ˜์™€ ๋™์ผํ•˜๊ฒŒ ์„ ์–ธ ํ›„, ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ํ˜ธ์ถœํ•˜๋ฉด ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค!

 

2. ๊ฐ„๋‹จํ•œ ์–‘์‹

 

์งง์€ ์ˆ˜์‹์ผ ๊ฒฝ์šฐ ๊ด„ํ˜ธ๊ฐ€ ํ•„์š”์—†๋‹ค

 

let func = x => x * 2 ;

 

3. this๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. ๐ŸŒŸ๐ŸŒŸ๐ŸŒŸโ€ผ๏ธ

 

์ผ๋ฐ˜ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” this๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์—๋Š” ํ•ด๋‹น ๋ฌธ๋ฒ•์ด ์ ์šฉ๋˜์ง€ ์•Š์Œ.

๊ทผ๋ฐ ์ด๊ฒŒ ์žฅ์ ์ด ๋œ๋‹ค.

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ๋‚ด์—์„œ this๋ฅผ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ƒ์œ„์— ์žˆ๋Š” ๊ทธ๊ฒƒ์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

 

(1) ์ผ๋ฐ˜ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ : this๊ฐ€ ๋™์ ์œผ๋กœ ๋ฐ”๋€Œ์–ด ๋ฌธ์ œ๊ฐ€ ์ƒ๊น€

        ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด .bind(this) ๋˜๋Š” self = this ๊ฐ™์€ ๋ณ„๋„ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•จ

function Person() {
  this.age = 0;

  setInterval(function () {
    this.age++; // ์—ฌ๊ธฐ์„œ this๋Š” ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ด (Node.js์—์„œ๋Š” global, ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” window)
    console.log(this.age);
  }, 1000);
}
new Person(); // NaN

 

bind๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ this๋ฅผ ๊ณ ์ •์‹œํ‚ค๋ฉด :

setTimeout(function () {
  this.count++;
  console.log(this.count);
}.bind(this), 1000); // this๋ฅผ Counter๋กœ ๊ณ ์ •

 

 

(2) ํ™”์‚ดํ‘œ ํ•จ์ˆ˜์˜ ๊ฒฝ์šฐ : this์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ Up

function Person() {
  this.age = 0;

  setInterval(() => {
    this.age++; // ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ this๋ฅผ ์‚ฌ์šฉ
    console.log(this.age);
  }, 1000);
}
new Person(); // 1, 2, 3, ...

 

๋˜ํ•œ, ์ฝœ๋ฐฑ ํ•จ์ˆ˜์—์„œ bind ์—†์ด ์ž˜ ๋™์ž‘ํ•จ

์ƒ์œ„ ์Šค์ฝ”ํ”„์—์„œ this๋ฅผ ์ž๋™์œผ๋กœ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ, 

๋ณต์žกํ•œ ์ปจํ…์ŠคํŠธ ์ „ํ™˜ ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์ง๊ด€์ ์œผ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ


๋Š๋‚€ ์  :

 

๋‹ค๋“ค ๊ถŒ์žฅํ•˜๋Š” ๊ฒƒ์—๋Š” ๊ทธ ์ด์œ ๊ฐ€ ์žˆ๋‹ค~

๋ง‰์—ฐํ•˜๊ฒŒ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ–ˆ์—ˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๊ทธ ์ด์œ ๋ฅผ ์ž์„ธํžˆ ํŒŒํ—ค์ณ๋ณด๋‹ˆ

์žฅ์ ์„ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹์•˜๋‹ค ใ…Ž.ใ…Ž

 

728x90