๐Ÿ“– ์‹คํ–‰ ์ปจํ…์ŠคํŠธ

c_yjยท2022๋…„ 6์›” 29์ผ
0

DeepDive

๋ชฉ๋ก ๋ณด๊ธฐ
20/42
post-thumbnail

์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ด๋‹ค.
์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜๋ฉด ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹๋ณ„์ž์™€ ์‹๋ณ„์ž์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ์‹
  • ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•˜๋Š” ์ด์œ 
  • ํด๋กœ์ €์˜ ๋™์ž‘ ๋ฐฉ์‹
  • ํƒœ์Šคํฌ ํ์™€ ํ•จ๊ผ ๋™์ž‘ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ
  • ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ์˜ ๋™์ž‘ ๋ฐฉ์‹

โœ”๏ธ ์†Œ์Šค์ฝ”๋“œ์˜ ํƒ€์ž…

4๊ฐ€์ง€ ํƒ€์ž…์˜ ์†Œ์Šค์ฝ”๋“œ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

1. ์ „์—ญ ์ฝ”๋“œ
์ „์—ญ ์ฝ”๋“œ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ์ „์—ญ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์ „์—ญ ๊ฐ์ฒด์™€ ์—ฐ๊ฒฐ๋˜์–ด์•ผ ํ•œ๋‹ค.

2. ํ•จ์ˆ˜ ์ฝ”๋“œ
ํ•จ์ˆ˜ ์ฝ”๋“œ๋Š” ์ง€์—ญ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, arguments ๊ฐ์ฒด๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.

3. eval ์ฝ”๋“œ
eval ์ฝ”๋“œ๋Š” strict mode์—์„œ ์ž์‹ ๋งŒ์˜ ๋…์ž์ ์ธ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ ํ•œ๋‹ค.

4. ๋ชจ๋“ˆ ์ฝ”๋“œ
๋ชจ๋“ˆ ์ฝ”๋“œ๋Š” ๋ชจ๋“ˆ๋ณ„๋กœ ๋…๋ฆฝ์ ์ธ ๋ชจ๋“ˆ ์Šค์ฝ”ํ”„๋ฅผ ์ƒ์„ ํ•œ๋‹ค.

โœ”๏ธ ์†Œ์Šค์ฝ”๋“œ์˜ ํ‰๊ฐ€์™€ ์‹คํ–‰

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์†Œ์Šค์ฝ”๋“œ๋ฅผ 2๊ฐœ์˜ ๊ณผ์ •์œผ๋กœ ๋‚˜๋ˆ„์–ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

  • ์†Œ์Šค์ฝ”๋“œ์˜ ํ‰๊ฐ€

    • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ์˜ ์„ ์–ธ๋ฌธ๋งŒ ๋จผ์ € ์‹คํ–‰ํ•˜์—ฌ ์ƒ์„ฑ๋œ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์‹๋ณ„์ž๋ฅผ ํ‚ค๋กœ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ฝ”ํ”„์— ๋“ฑ๋ก
  • ์†Œ์Šค์ฝ”๋“œ์˜ ์‹คํ–‰

    โœ”๏ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ์—ญํ• 

// ์ „์—ญ ๋ณ€์ˆ˜ ์„ ์–ธ
const x = 1;
const y = 2;

// ํ•จ์ˆ˜ ์ •์˜
function foo(a) {
  // ์ง€์—ญ ๋ณ€์ˆ˜ ์„ ์–ธ
  const x = 10;
  const y = 20;

  // ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
  console.log(a + x+ y); // 130
}

// ํ•จ์ˆ˜ ํ˜ธ์ถœ
foo(100);

// ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
console.log(x+y) // 3 

1. ์ „์—ญ ์ฝ”๋“œ ํ‰๊ฐ€
2. ์ „์—ญ ์ฝ”๋“œ ์‹คํ–‰
3. ํ•จ์ˆ˜ ์ฝ”๋“œ ํ‰๊ฐ€
4. ํ•จ์ˆ˜ ์ฝ”๋“œ ์‹คํ–‰
์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ ค๋ฉด ์Šค์ฝ”ํ”„,์‹๋ณ„์ž,์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ ๋“ฑ์˜ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.

  • ์„ ์–ธ์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ชจ๋“  ์‹๋ณ„์ž๋ฅผ ์Šค์ฝ”ํ”„๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋“ฑ๋กํ•˜๊ณ  ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ์ง€์†์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ์Šค์ฝ”ํ”„๋Š” ์ค‘์ฒฉ ๊ด€๊ณ„์— ์˜ํ•ด ์Šค์ฝ”ํ”„ ์ฒด์ธ์„ ํ˜•์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์Šค์ฝ”ํ”„ ์ฒด์ธ์„ ํ†ตํ•ด ์ƒ์œ„ ์Šค์ฝ”ํ”„๋กœ ์ด๋™ํ•˜๋ฉฐ ์‹๋ฐœ์ž๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ๋‹ค์‹œ ๋˜๋Œ์•„๊ฐˆ ์ˆ˜๋„ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ™˜๊ฒฝ์„ ์ œ๊ณตํ•˜๊ณ  ์ฝ”๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์‹ค์ œ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ์˜์—ญ์ด๋‹ค
์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์‹๋ณ„์ž(๋ณ€์ˆ˜, ํ•จ์ˆ˜, ํด๋ž˜์Šค ๋“ฑ์˜ ์ด๋ฆ„)์„ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์Šค์ฝ”ํ”„์™€ ์ฝ”๋“œ ์‹คํ–‰ ์ˆœ์„œ ๊ด€๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•œ ๋‚ด๋ถ€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์œผ๋กœ, ๋ชจ๋“  ์ฝ”๋“œ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์‹คํ–‰๋˜๊ณ  ๊ด€๋ฆฌ๋œ๋‹ค.

โœ”๏ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ์Šคํ…

const x = 1;

function foo () {
  const y = 2;
  
  function bar() {
    const z = 3;
    console.log(x+ +y + z);
  }
  bar();
}
foo() ; 8
  • ์ „์—ญ ์ฝ”๋“œ์˜ ํ‰๊ฐ€์™€ ์‹คํ–‰
  • foo ํ•จ์ˆ˜ ์ฝ”๋“œ์˜ ํ‰๊ฐ€์™€ ์‹คํ–‰
  • bar ํ•จ์ˆ˜ ์ฝ”๋“œ์˜ ํ‰๊ฐ€์™€ ์‹คํ–‰
  • foo ํ•จ์ˆ˜ ์ฝ”๋“œ๋กœ ๋ณต๊ท€
  • ์ „์—ญ ์ฝ”๋“œ๋กœ ๋ณต๊ท€

์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Šคํ…์€ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Šคํƒ์˜ ์ตœ์ƒ์œ„์— ์กด์žฌํ•˜๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์–ธ์ œ๋‚˜ ํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋‹ค.

โœ”๏ธ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ

๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ์‹๋ณ„์ž์™€ ์‹๋ณ„์ž์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ’, ๊ทธ๋ฆฌ๊ณ  ์ƒ์œ„ ์Šค์ฝ”ํ”„์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ธฐ๋กํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋‹ค.
๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ์Šค์ฝ”ํ”„์™€ ์‹๋ณ„์ž๋ฅผ ๊ด€๋ฆฌ.

๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ๋‘๊ฐœ์˜ ์ปดํฌ๋„ŒํŠธ๋กœ ๊ตฌ์„ฑ

  • ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ
    ์Šค์ฝ”ํ”„์— ํฌํ•จ๋œ ์‹๋ณ„์ž๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ๋“ฑ๋ก๋œ ์‹๋ณ„์ž์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ’์„ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ๋‹ค.

  • ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ

    • ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค
    • ๋‹จ๋ฐ˜ํ–ฅ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์ธ ์Šค์ฝ”ํ”„ ์ฒด์ธ์„ ๊ตฌํ˜„ํ•œ๋‹ค

    โœ”๏ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ์ƒ์„ฑ๊ณผ ์‹๋ณ„์ž ๊ฒ€์ƒ‰ ๊ณผ์ •

var x = 1;
const y = 2;

function foo (a) {
  var x = 3;
  const y = 4;
  
  function bar (b) {
    const z = 5;
    console.log(a + b + x + y + z);
  }
  bar(10);
}
foo(20) // 42

โ˜‘๏ธ ์ „์—ญ ๊ฐ์ฒด ์ƒ์„ฑ

โ˜‘๏ธ ์ „์—ญ ์ฝ”๋“œ ํ‰๊ฐ€

    1. ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ
    1. ์ „์—ญ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ƒ์„ฑ
    • 2.1 ์ „์—ญ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
      • 2.1.1 ๊ฐ์ฒด ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
      • 2.1.2 ์„ ์–ธ์  ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
    • 2.2 this ๋ฐ”์ธ๋”ฉ
    • ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฒฐ์ •

1. ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์ƒ์„ฑ

๋น„์–ด์žˆ๋Š” ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Šคํƒ์— ํ‘ธ์‹œํ•œ๋‹ค. ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์Šคํƒ์˜ ์ตœ์ƒ์œ„, ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ๋œ๋‹ค.

2. ์ „์—ญ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ƒ์„ฑ

์ „์—ญ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜๊ณ  ์ „์—ญ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.

2.1 ์ „์—ญ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
์ „์—ญ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ์ „์—ญ ์Šค์ฝ”ํ”„, ์ „์—ญ ๊ฐ์ฒด์˜ ๋นŒํŠธ์ธ ์ „์—ญ ํ”„๋กœํผํ‹ฐ์™€ ๋นŒํŠธ์ธ ์ „์—ญ ํ•จ์ˆ˜, ํ‘œ์ค€ ๋นŒํŠธ์ธ์„ ์ œ๊ณตํ•œ๋‹ค
๊ธฐ์กด์˜ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜์™€ ES6์˜ let, const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ „์—ญ ์Šค์ฝ”ํ”„ ์—ญํ• ์„ ํ•˜๋Š” ์ „์—ญ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ๋Š” ๊ฐ์ฒด ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์™€ ์„ ์–ธ์  ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

  • 2.1.1 ๊ฐ์ฒด ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ
    ์ „์—ญ ์ฝ”๋“œ ํ‰๊ฐ€ ๊ณผ์ •์—์„œ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ •์˜๋œ ์ „์—ญ ํ•จ์ˆ˜๋Š” ์ „์—ญ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์˜ ๊ฐ์ฒด ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์— ์—ฐ๊ฒฐ๋œ BindingObject๋ฅผ ํ†ตํ•ด ์ „์—ญ ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๊ฐ€ ๋œ๋‹ค.
  • 2.1.1 ์„ ์–ธ์  ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
    var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜์™€ ํ•จ์„œ ์„ ์–ธ๋ฌธ์œผ๋กœ ์ •์˜ํ•œ ์ „์—ญ ํ•จ์ˆ˜ ์ด์™ธ์˜ ์„ ์–ธ, let, const ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ์  ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์— ๋“ฑ๋ก๋˜๊ณ  ๊ด€๋ฆฌ.

this ๋ฐ”์ธ๋”ฉ

์ผ๋ฐ˜ ์ ์œผ๋กœ ์ „์—ญ ์ฝ”๋“œ์—์„œ๋Š” this๋Š” ์ „์—ญ ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋ฏ€๋กœ ์ „์—ญ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ์˜ [[GlobalThisValue]] ๋‚ด๋ถ€ ์Šฌ๋กฏ์—๋Š” ์ „์—ญ ๊ฐ์ฒด๊ฐ€ ๋ฐ”์ธ๋”ฉ๋œ๋‹ค

์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฒฐ์ •

ํ˜„์žฌ ํ‰๊ฐ€ ์ค‘์ธ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜๋Š” ์™ธ๋ถ€ ์†Œ์Šค์ฝ”๋“œ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ, ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ๋‹จ๋ฐฉํ–ฅ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์ธ ์Šค์ฝ”ํ”„ ์ฒด์ธ์„ ๊ตฌํ˜„

โ˜‘๏ธ ์ „์—ญ ์ฝ”๋“œ ์‹คํ–‰

  • ์ „์—ญ ์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰
  • ๋ณ€์ˆ˜ ํ• ๋‹น๋ฌธ์ด ์‹คํ–‰๋˜์–ด ์ „์—ญ ๋ณ€์ˆ˜ x, y์— ๊ฐ’์ด ํ• ๋‹น
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ
    ์‹๋ณ„์ž ๊ฒฐ์ •์˜ ์œ„ํ•ด ์‹๋ณ„์ž๋ฅผ ๊ฒ€์ƒ‰ํ•  ๋•Œ๋Š” ์‹คํ–‰ ์ค‘์ธ ์ปจํ…์ŠคํŠธ์—์„œ ์‹๋ณ„์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

โ˜‘๏ธ ํ•จ์ˆ˜ ์ฝ”๋“œ ํ‰๊ฐ€

  • ํ•จ์ˆ˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์‹คํ–‰
  • ํ•จ์ˆ˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ƒ์„ฑ
    • ํ•จ์ˆ˜ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
    • this๋ฐ”์ธ๋”ฉ
    • ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฒฐ์ •

ํ•จ์ˆ˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ ์‹คํ–‰
ํ•จ์ˆ˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋ฅผ ์ƒ์„ฑ

ํ•จ์ˆ˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ƒ์„ฑ
ํ•จ์ˆ˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.

  • ํ•จ์ˆ˜ ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ์ƒ์„ฑ
    ๋งค๊ฐœ๋ณ€์ˆ˜, argument๊ฐ์ฒด, ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•œ ์ง€์—ญ ๋ณ€์ˆ˜์™€ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ๋“ฑ๋กํ•˜๊ณ  ๊ด€๋ฆฌํ•œ๋‹ค.
  • this๋ฐ”์ธ๋”ฉ
    [[ThisValue]]๋‚ด๋ถ€ ์Šฌ๋กฏ์— this๊ฐ€ ๋ฐ”์ธ๋”ฉ๋œ๋‹ค.
    this๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋ฐฉ์‹์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.
  • ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ ๊ฒฐ์ •
    ํ•จ์ˆ˜๋Š” ์–ด๋””์„œ ํ˜ธ์ถœํ–ˆ๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ, ์–ด๋””์—์„œ ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

โ˜‘๏ธ foo ํ•จ์ˆ˜ ์ฝ”๋“œ ์‹คํ–‰

  • ๋Ÿฐํƒ€์ž„์ด ์‹œ์ž‘๋˜์–ด fooํ•จ์ˆ˜์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰
  • ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ธ์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๊ณ , ๋ณ€์ˆ˜ ํ• ๋‹น๋ฌธ์ด ์‹คํ–‰๋˜์–ด ์ง€์—ญ๋ณ€์ˆ˜ x, y์— ๊ฐ’์ด ํ• ๋‹น๋œ๋‹ค.
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ

์‹๋ณ„์ž ๊ฒฐ์ •์„ ์œ„ํ•ด ์‹คํ–‰ ์ค‘์ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์—์„œ ์‹๋ณ„์ž๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค.

โ˜‘๏ธ bar ํ•จ์ˆ˜ ์ฝ”๋“œ ํ‰๊ฐ€

  • barํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด barํ•จ์ˆ˜ ๋‚ด๋ถ€๋กœ ์ฝ”๋“œ์˜ ์ œ์–ด๊ถŒ์ด ์ด๋™
  • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์™€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์ƒ์„ฑ ๊ณผ์ •์€ foo ํ•จ์ˆ˜ ์ฝ”๋“œ ํ‰๊ฐ€์™€ ๋™์ผ

โ˜‘๏ธ bar ํ•จ์ˆ˜ ์ฝ”๋“œ ์‹คํ–‰

๋Ÿฐํƒ€์ž„์ด ์‹œ์ž‘๋˜์–ด bar ํ•จ์ˆ˜์˜ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ธ์ˆ˜๊ฐ€ ํ• ๋‹น๋˜๊ณ , ๋ณ€์ˆ˜ ํ• ๋‹น๋ฌธ์ด ์‹คํ–‰๋˜์–ด ์ง€์—ญ ๋ณ€์ˆ˜ z์— ๊ฐ’์ด ํ• ๋‹น

  • console ์‹๋ณ„์ž ๊ฒ€์ƒ‰
  • log ๋ฉ”์„œ๋“œ ๊ฒ€์ƒ‰
  • ํ‘œํ˜„์‹ a + b + x + y + z์˜ ํ‰๊ฐ€
  • console.ใ…ฃใ…ใ…Ž aptjem ghcnf

โ˜‘๏ธ bar ํ•จ์ˆ˜ ์ฝ”๋“œ ์‹คํ–‰ ์ข…๋ฃŒ

console.log ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ์ข…๋ฃŒํ•˜๋ฉด ๋”๋Š” ์‹คํ–‰ํ•  ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ bar ํ•จ์ˆ˜ ์ฝ”๋“œ์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ๋œ๋‹ค.

โ˜‘๏ธ foo ํ•จ์ˆ˜ ์ฝ”๋“œ ์‹คํ–‰ ์ข…๋ฃŒ

bar ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒํ•˜๋ฉด ๋” ์ด์ƒ ์‹คํ–‰ํ•ญ ์ฝ”๋“œ๊ฐ€ ์—†์œผ๋ฏ€๋กœ foo ํ•จ์ˆ˜ ์ฝ”๋“œ์˜ ์‹คํ–‰์ด ์ข…๋ฃŒ

โœ”๏ธ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์™€ ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„

  • ์„ ์–ธ์  ํ™˜๊ฒฝ ๋ ˆ์ฝ”๋“œ ๊ฐ–๋Š” ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑํ•˜์—ฌ ๊ธฐ์กด์˜ ์ „์—ญ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ ๊ต์ฒด
  • ์ƒˆ๋กญ๊ฒŒ ์ƒ์„ฑ๋œ if ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์„ ์œ„ํ•œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์™ธ๋ถ€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋Š” if ๋ฌธ์ด ์‹คํ–‰๋˜๊ธฐ ์ด์ „์— ์ „์—ญ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ๊ฐ€๋ฆฌํ‚ด
  • for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์— let์€ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰๋  ๋–„๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑ ๋งŒ์•ฝ for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ ์ •์˜๋œ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•จ์ˆ˜์˜ ์ƒ์œ„์Šค์ฝ”ํ”„๋Š” for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ์ƒ์„ฑํ•œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ
profile
FrontEnd Developer

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