[JavaScript] ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ๊ณผ ๋ธ”๋ก์Šค์ฝ”ํ”„

2025. 9. 22. 20:20ยท๐Ÿ“š ํ”„๋ก ํŠธ์—”๋“œ/Javascript

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ํ˜•์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ํ˜ธ์ด์ŠคํŒ…์œผ๋กœ ์ธํ•ด ํ˜ธ์ถœ์„ ๋จผ์ € ํ•ด๋„ ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•œ๋‹ค.

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ํ˜•์‹์€ ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ€์ ธ์„œ ์ „์—ญ์— hello ํ•จ์ˆ˜๊ฐ€ ์ถ”๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ œ ์—†์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

ํ•˜์ง€๋งŒ ์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ๋ณด์ž.

๐Ÿ“ ์˜ˆ์ œ ์ฝ”๋“œ

// 1
{
  c();
  function c() {
    console.log("block");
  }
}

// 2
{
  function c() {
    console.log("block");
  }
}
c();

// 3
c();
{
  function c() {
    console.log("block");
  }
}

1๋ฒˆ๊ณผ 2๋ฒˆ ์ฝ”๋“œ๋Š” ์—๋Ÿฌ ์—†์ด ๋™์ž‘ํ•œ๋‹ค.

ํ•˜์ง€๋งŒ 3๋ฒˆ ์ฝ”๋“œ๋Š” TypeError๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ?

 

๐Ÿ” ์˜ˆ์ œ๋ณ„ ๋™์ž‘ ์›๋ฆฌ

โœ… ์˜ˆ์ œ 1

{
  c();
  function c() {
    console.log("block");
  }
}

๋ธ”๋ก ์•ˆ์—์„œ c๋ฅผ ํ˜ธ์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—

๋ธ”๋ก ๋‚ด๋ถ€ ํ•จ์ˆ˜ ์„ ์–ธ์ด ๋ธ”๋ก ์Šค์ฝ”ํ”„ ์•ˆ์—์„œ ํ˜ธ์ด์ŠคํŒ… ๋˜์–ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.

 

โœ… ์˜ˆ์ œ 2

{
  function c() {
    console.log("block");
  }
}
c();

ํ•จ์ˆ˜ ์„ ์–ธ์ด ๋ธ”๋ก ์•ˆ์— ์žˆ๊ณ , ํ˜ธ์ถœ์€ ๋ธ”๋ก ๋ฐ”๊นฅ์—์„œ ์ผ์–ด๋‚œ๋‹ค.

๋ธ”๋ก ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ํ•จ์ˆ˜๋ฅผ ์ „์—ญ์— ๋“ฑ๋กํ•˜๊ธฐ ๋•Œ๋ฌธ์— c()๊ฐ€ ๋™์ž‘ํ•œ๋‹ค.

* ์—„๊ฒฉ ๋ชจ๋“œ๋‚˜ ๋ชจ๋“ˆ ํ™˜๊ฒฝ์—์„œ๋Š” ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ์ฃผ์˜ํ•  ๊ฒƒ

 

โŒ ์˜ˆ์ œ 3 (TypeError ๋ฐœ์ƒ)

c();
{
  function c() {
    console.log("block");
  }
}

ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ๋จผ์ € ๋‚˜์˜ค๊ณ , ๋ธ”๋ก ์•ˆ์—์„œ ํ•จ์ˆ˜ ์„ ์–ธ์ด ์ด๋ค„์ง„๋‹ค.

ํ˜ธ์ด์ŠคํŒ… ๊ณผ์ •์—์„œ c๋ผ๋Š” ์‹๋ณ„์ž๋Š” ๋งˆ์น˜ var c์ฒ˜๋Ÿผ ๋ฏธ๋ฆฌ ์„ ์–ธ๋œ๋‹ค.

ํ˜ธ์ถœ ์‹œ์ ์— c๋Š” ์ด๋ฏธ ์กด์žฌํ•˜์ง€๋งŒ ๊ฐ’์€ undefined ์ƒํƒœ์ด๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์•„๋ž˜ ์ฝ”๋“œ์ฒ˜๋Ÿผ ์ฒ˜๋ฆฌํ•œ๋‹ค.

var c;

c(); // undefined() -> TypeError ๋ฐœ์ƒ

{
  function c() {
    console.log('block');
  }
}

์˜ˆ์ œ 3์—์„œ๋Š” ํ˜ธ์ด์ŠคํŒ…์ด ์ผ์–ด๋‚˜์ง€๋งŒ ๊ฐ’์ด undefined์ธ ์ƒํƒœ์—ฌ์„œ

ํ˜ธ์ถœ ์‹œ TypeError: c is not a function๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

๐Ÿ“š ์ฐธ๊ณ 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/function

 

ํ•จ์ˆ˜ ์„ ์–ธ - JavaScript | MDN

ํ•จ์ˆ˜ ์„ ์–ธ์œผ๋กœ ์ƒ์„ฑ๋œ ํ•จ์ˆ˜๋Š” Function ๊ฐ์ฒด๋กœ, Function ๊ฐ์ฒด์˜ ๋ชจ๋“  ์†์„ฑ(property), ๋ฉ”์„œ๋“œ ๋ฐ ํ–‰์œ„ ํŠน์„ฑ(behavior)์„ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์— ๊ด€ํ•œ ๋” ์ž์„ธํ•œ ์ •๋ณด๋Š” Function ์ฐธ์กฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋Š” ๋˜ํ•œ

developer.mozilla.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/block

 

block - JavaScript | MDN

๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ๋ธ”๋ก๋ฌธ์€ ๋ณตํ•ฉ๋ฌธ์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก๋ฌธ์„ ์“ฐ๋ฉด JavaScript๊ฐ€ ํ•˜๋‚˜์˜ ๋ฌธ์„ ๊ธฐ๋Œ€ํ•˜๋Š” ๊ณณ์—์„œ ๋‹ค์ˆ˜์˜ ๋ฌธ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript์—์„œ ์ด๋ ‡๊ฒŒ ๋ฌธ์„ ๋ฌถ๋Š”๊ฑด ํ”ํžˆ ์“ฐ์ด๋Š”

developer.mozilla.org

 

 

728x90
'๐Ÿ“š ํ”„๋ก ํŠธ์—”๋“œ/Javascript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Javascript] AJAX ์•Œ์•„๋ณด๊ธฐ
  • [JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹
  • [JavaScript] ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(Lexical scope) ์•Œ์•„๋ณด๊ธฐ
  • [JavaScript] this ํ‚ค์›Œ๋“œ ์ •๋ฆฌ
_์ด์•Ž
_์ด์•Ž
๊ณต๋ถ€ ๊ธฐ๋ก ๋ธ”๋กœ๊ทธ
  • _์ด์•Ž
    ๊ณต๋ถ€
    _์ด์•Ž
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • โœ๏ธ ๋ชจ๋“  ๊ธ€ (57)
      • ๐Ÿ“š ํ”„๋ก ํŠธ์—”๋“œ (40)
        • React (11)
        • HTML_CSS (9)
        • Javascript (14)
        • git_github (4)
        • Web (2)
      • ๐Ÿ‘€ ํ”„๋กœ์ ํŠธ ๋ฐ ํ™œ๋™ (13)
        • ์ฝ”๋“œ์ž‡ ์Šคํ”„๋ฆฐํŠธ 19๊ธฐ (13)
      • โš™๏ธ etc. (4)
  • ๋งํฌ

    • ๐Ÿ‘‹ GitHub
    • ๐Ÿง ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๊ธฐ๋ก
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ์ธ๊ธฐ ๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.4
_์ด์•Ž
[JavaScript] ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ๊ณผ ๋ธ”๋ก์Šค์ฝ”ํ”„
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”