wam
w__am ๊ฐœ๋ฐœ๋…ธํŠธ
wam
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (165)
    • CS ์ง€์‹ (10)
      • ์ž๋ฃŒ๊ตฌ์กฐ (0)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (0)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ (0)
      • ์šด์˜์ฒด์ œ (0)
      • ๋„คํŠธ์›Œํฌ (7)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (0)
      • ๋””์ž์ธ ํŒจํ„ด (3)
    • Frontend (131)
      • Three.js (64)
      • NPM (1)
      • Nest.js (19)
      • React (10)
      • Apollo (7)
      • TypeScript (2)
      • JavaScript (12)
      • HTML, CSS (1)
      • Jest (3)
      • E2E (5)
      • Cypress (7)
    • Database (12)
      • TypeORM (12)
    • IT ์ง€์‹ (8)
      • ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค (3)
      • ๋„คํŠธ์›Œํฌ (1)
      • ๋ฐ์ดํ„ฐ ํฌ๋งท (2)
      • ๊ธฐํƒ€ (2)
    • IT Book (2)
    • ์œ ์šฉํ•œ ์‚ฌ์ดํŠธ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก
  • ๐Ÿฑ Github

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • math.sin()
  • getelapsedtime()
  • axeshelper
  • react ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • ์‚ผ๊ฐํ•จ์ˆ˜
  • getdelta()
  • ๋ Œ๋”๋ง ์„ฑ๋Šฅ ์ตœ์ ํ™”
  • ๋ฐ์ดํ„ฐ ํฌ๋งท
  • mapped types
  • isabstract
  • three.js ๊ตฌ์„ฑ ์š”์†Œ
  • ์›ํ˜•์ ์ธ ์›€์ง์ž„
  • ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด
  • e.preventdefault()
  • joi ์—๋Ÿฌ
  • math.cos()
  • Interface
  • ํ•จ์ˆ˜์˜ ๋ฒ”์œ„
  • ์˜คํ”„-ํ”„๋ ˆ๋ฏธ์Šค(off-premise) ๋ฐฉ์‹
  • reactive variables
  • ์ดˆ๊ธฐ ํ™˜๊ฒฝ์„ค์ •
  • gridhelper
  • ์Šค์ฝ”ํ”„
  • Decorators
  • API
  • type-graphql
  • ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ
  • threejs ๊ฐœ๋ฐœ ํ•  ๋•Œ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ
  • ๋””์ž์ธ ํŒจํ„ด
  • ํ•จ์ˆ˜ ํ‘œํ˜„์‹

์ตœ๊ทผ ๊ธ€

๊ด€๋ฆฌ์ž

๊ธ€์“ฐ๊ธฐ / ์Šคํ‚จํŽธ์ง‘ / ๊ด€๋ฆฌ์žํŽ˜์ด์ง€
hELLO ยท Designed By ์ •์ƒ์šฐ.
wam

w__am ๊ฐœ๋ฐœ๋…ธํŠธ

๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘
Frontend/JavaScript

๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘

2024. 5. 8. 18:10
๐Ÿ’ก ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘ : ๋ณ€์ˆ˜์˜ ์œ ํšจ ๋ฒ”์œ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ทœ์น™ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

- ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ ์„ ์–ธํ•  ๋•Œ ์ƒ๊ธด๋‹ค.

- ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

- ์ •์  ์Šค์ฝ”ํ”„๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

 

๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘(lexical scoping)

 

๋งŽ์ด๋“ค ํ—ท๊ฐˆ๋ฆฌ๋Š” ๊ฐœ๋…์ธ๋ฐ ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ๊ฐ€ ์•„๋‹ˆ๋ผ ์„ ์–ธํ•  ๋•Œ ์ƒ๊ธด๋‹ค.

ํ˜ธ์ถœ์ด ์•„๋‹ˆ๋ผ ์„ ์–ธ! ์ •์  ์Šค์ฝ”ํ”„๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

 

 

๋‹ค์Œ ์ฝ”๋“œ์—์„œ console์ด ์–ด๋–ป๊ฒŒ ์ฐํž์ง€ ์˜ˆ์ƒํ•ด ๋ณด๊ธฐ

var name = 'zero';
function log() {
  console.log(name);
}

function wrapper() {
  var name = 'nero';
  log();
}
wrapper();

 

 

์ •๋‹ต: zero

  • ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์ƒ๊ธด๋‹ค.
  • log ์•ˆ์˜ name์€ wrapper ์•ˆ์˜ ์ง€์—ญ๋ณ€์ˆ˜ name์ด ์•„๋‹ˆ๋ผ, ์ „์—ญ๋ณ€์ˆ˜ name์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
  • ์ด๋Ÿฐ ๊ฒƒ์„ lexical scoping์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ํ•จ์ˆ˜๋ฅผ ์ฒ˜์Œ ์„ ์–ธํ•˜๋Š” ์ˆœ๊ฐ„, ํ•จ์ˆ˜ ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋Š” ์ž๊ธฐ ์Šค์ฝ”ํ”„๋กœ๋ถ€ํ„ฐ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณณ(์ƒ์œ„ ๋ฒ”์œ„์—์„œ)์— ์žˆ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ณ„์† ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์œ„์˜ ์˜ˆ์‹œ์—์„œ๋Š” log ํ•จ์ˆ˜ ์•ˆ์˜ name ๋ณ€์ˆ˜๋Š” ์„ ์–ธ ์‹œ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ „์—ญ๋ณ€์ˆ˜ name์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋œ๋‹ค.
  • ๊ทธ๋ž˜์„œ wrapper ์•ˆ์—์„œ log๋ฅผ ํ˜ธ์ถœํ•ด๋„ ์ง€์—ญ๋ณ€์ˆ˜ name='nero'๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ
  • ๊ทธ๋Œ€๋กœ ์ „์—ญ๋ณ€์ˆ˜ name์˜ ๊ฐ’์ธ zero๊ฐ€ ๋‚˜์˜จ๋‹ค.

 

 

log ํ•จ์ˆ˜๊ฐ€ ํ•œ ๋ฒˆ ์„ ์–ธ๋œ ์ด์ƒ, ์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ๋˜์–ด์žˆ๋Š” name ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ๊ฑธ ๊ฐ€๋ฆฌํ‚ค๊ฒŒ ํ•  ์ˆ˜ ์—†๋‹ค.

 

 

์ „์—ญ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ์ผ์€ ์ง€์–‘ํ•ด์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ณ€์ˆ˜๊ฐ€ ์„ž์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Frontend > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

๋ฉ”์ผ ์ฃผ์†Œ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ์ •๊ทœ ํ‘œํ˜„์‹(Regex) ํŒจํ„ด์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ดํŠธ  (0) 2024.09.25
for...of์™€ forEach ์ฐจ์ด  (0) 2024.08.06
์Šค์ฝ”ํ”„ ์ฒด์ธ  (0) 2024.05.08
ํด๋กœ์ €  (0) 2024.04.13
์‹คํ–‰ ์ปจํ…์ŠคํŠธ  (0) 2024.03.23
    'Frontend/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ๋ฉ”์ผ ์ฃผ์†Œ์˜ ์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•œ ์ •๊ทœ ํ‘œํ˜„์‹(Regex) ํŒจํ„ด์„ ์ œ๊ณตํ•˜๋Š” ์‚ฌ์ดํŠธ
    • for...of์™€ forEach ์ฐจ์ด
    • ์Šค์ฝ”ํ”„ ์ฒด์ธ
    • ํด๋กœ์ €
    wam
    wam

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