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

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

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

์ตœ๊ทผ ๊ธ€

๊ด€๋ฆฌ์ž

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

ํด๋กœ์ €

ํด๋กœ์ €
Frontend/JavaScript

ํด๋กœ์ €

2024. 4. 13. 22:00
๐Ÿ’ก ํด๋กœ์ €๋Š” ์Šค์ฝ”ํ”„์™€ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ง€์‹์ด ์žˆ์œผ๋ฉด ์ดํ•ดํ•˜๋Š”๋ฐ ๋„์›€์ด ๋œ๋‹ค.

๐Ÿ’ก  ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊ณผ์˜ ์กฐํ•ฉ์ด๋‹ค.

๐Ÿ’ก  ํด๋กœ์ €๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜๋ณด๋‹ค ์ค‘์ฒฉํ•จ์ˆ˜๊ฐ€ ๋” ์˜ค๋ž˜ ์œ ์ง€๋˜๊ณ  ์ด๋ฏธ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์ข…๋ฃŒํ•œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

- ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์–ด๋–ค ์‹๋ณ„์ž๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋Š” ํด๋กœ์ €๊ฐ€ ์•„๋‹ˆ๋‹ค.

- ์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ํด๋กœ์ €์˜€์ง€๋งŒ ์™ธ๋ถ€ ํ•จ์ˆ˜๋ณด๋‹ค ์ผ์ฐ ์†Œ๋ฉธ๋˜๋ฉด ํด๋กœ์ €์˜ ๋ณธ์งˆ์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

ํด๋กœ์ €

  • ํ•จ์ˆ˜ ์ผ๊ธ‰ ๊ฐ์ฒด๋กœ ์ทจ๊ธ‰ํ•˜๋Š” ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ค‘์š”ํ•œ ํŠน์„ฑ์ด๋‹ค.
  • MDN์—์„œ์˜ ์ •์˜ : ํด๋กœ์ €๋Š” ํ•จ์ˆ˜์™€ ๊ทธ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ๊ณผ์˜ ์กฐํ•ฉ์ด๋‹ค.

 

 

๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(= ์ •์  ์Šค์ฝ”ํ”„)

const x = 1;
function foo() {
const x = 10;
// ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜ ์ •์˜ ํ™˜๊ฒฝ(์œ„์น˜)์— ๋”ฐ๋ผ ๊ฒฐ์ •๋œ๋‹ค.
// ํ•จ์ˆ˜ ํ˜ธ์ถœ ์œ„์น˜์™€ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ์•„๋ฌด๋Ÿฐ ๊ด€๊ณ„๊ฐ€ ์—†๋‹ค.
bar();
}
// ํ•จ์ˆ˜ bar๋Š” ์ž์‹ ์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„
// ์ฆ‰ ์ „์—ญ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ [[Environment]]์— ์ €์žฅํ•˜์—ฌ ๊ธฐ์–ตํ•œ๋‹ค.
function bar() {
console.log(x); // 1
}
// foo์™€ bar์€ ๋ชจ๋‘ ์ „์—ญ ํ•จ์ˆ˜๋‹ค.
foo(); // 1
bar(); // 1

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ์—”์ง„ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ํ˜ธ์ถœํ–ˆ๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋ฅผ ์–ด๋””์— ์ •์˜ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ฒฐ์ •ํ•œ๋‹ค.

 

 

ํด๋กœ์ €์™€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ

const x = 1;
function outer() {
const x = 10;
const inner = function() { console.log(x); };
return inner;
}
// outer ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ค‘์ฒฉ ํ•จ์ˆ˜ inner๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const innerFunc = outer();
innerFunc(); // 10

์™ธ๋ถ€ ํ•จ์ˆ˜๋ณด๋‹ค ์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ๋” ์˜ค๋ž˜ ์œ ์ง€๋˜๋Š” ๊ฒฝ์šฐ

์ค‘์ฒฉ ํ•จ์ˆ˜๋Š” ์ด๋ฏธ ์ƒ๋ช…์ฃผ๊ธฐ๊ฐ€ ์ข…๋ฃŒํ•œ ์™ธ๋ถ€ ํ•จ์ˆ˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด๋Ÿฌํ•œ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ํด๋กœ์ €๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ชจ๋“  ํ•จ์ˆ˜๋Š” ์ž์‹ ์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.

์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ํ•จ์ˆ˜๋ฅผ ์–ด๋””์„œ ํ˜ธ์ถœํ•˜๋“  ์ƒ๊ด€์—†์ด ์œ ์ง€๋˜๋ฉฐ ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๊ณ  ์‹๋ณ„์ž์— ๋ฐ”์ธ๋”ฉ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

const x = 1;
function outerFunc() {
const x = 10;
innerFunc();
}
function innerFunc() {
console.log(x); // 1
}
outerFunc(); // 1

 

 

์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์–ด๋–ค ์‹๋ณ„์ž๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š” ํ•จ์ˆ˜๋Š” ํด๋กœ์ €๊ฐ€ ์•„๋‹ˆ๋‹ค.

<!DOCTYPE html>
<html>
<body>
<script>
function foo() {
const x = 1;
const y = 2;
// ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋กœ์ €๋ผ๊ณ  ํ•˜์ง€ ์•Š๋Š”๋‹ค.
function bar() {
const z = 3;
debugger;
// ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š๋Š”๋‹ค.
console.log(z);
}
return bar;
}
const bar = foo();
bar();
</script>
</body>
</html>

 

 

์ค‘์ฒฉ ํ•จ์ˆ˜๊ฐ€ ํด๋กœ์ €์˜€์ง€๋งŒ ์™ธ๋ถ€ ํ•จ์ˆ˜๋ณด๋‹ค ์ผ์ฐ ์†Œ๋ฉธ๋˜๋ฉด ํด๋กœ์ €์˜ ๋ณธ์งˆ์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

<!DOCTYPE html>
<html>
<body>
<script>
function foo() {
const x = 1;
// bar ํ•จ์ˆ˜๋Š” ํด๋กœ์ €์˜€์ง€๋งŒ ๊ณง๋ฐ”๋กœ ์†Œ๋ฉธํ•œ๋‹ค.
// ์ด๋Ÿฌํ•œ ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํด๋กœ์ €๋ผ๊ณ  ํ•˜์ง€ ์•Š๋Š”๋‹ค.
function bar() {
debugger;
// ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
console.log(x);
}
bar();
}
foo();
</script>
</body>
</html>

 

 

์™ธ๋ถ€ ํ•จ์ˆ˜๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์œ ์ง€๋˜๊ณ  ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•˜๋ฉด ํด๋กœ์ €์ด๋‹ค.

์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž ์ค‘์—์„œ ๊ธฐ์–ตํ•ด์•ผ ํ•  ์‹๋ณ„์ž๋งŒ ๊ธฐ์–ตํ•œ๋‹ค.

<!DOCTYPE html>
<html>
<body>
<script>
function foo() {
const x = 1;
const y = 2;
// ํด๋กœ์ €
// ์ค‘์ฒฉ ํ•จ์ˆ˜ bar๋Š” ์™ธ๋ถ€ ํ•จ์ˆ˜๋ณด๋‹ค ๋” ์˜ค๋ž˜ ์œ ์ง€๋˜๋ฉฐ ์ƒ์œ„ ์Šค์ฝ”ํ”„์˜ ์‹๋ณ„์ž๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
function bar() {
debugger;
console.log(x);
}
return bar;
}
const bar = foo();
bar();
</script>
</body>
</html>

 

 

ํด๋กœ์ €์˜ ํ™œ์šฉ

  • ํด๋กœ์ €๋Š” ์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณ€๊ฒฝํ•˜๊ณ  ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ์ƒํƒœ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์€๋‹‰ํ•˜๊ณ  ํŠน์ • ํ•จ์ˆ˜์—๊ฒŒ๋งŒ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์€๋‹‰๋œ ๋ณ€์ˆ˜๋‹ค.

const counter= (function(){
// ์นด์šดํŠธ ์ƒํƒœ ๋ณ€์ˆ˜
let num = 0;
// ํด๋กœ์ €์ธ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€ ์Šค์ฝ”ํ”„๋ฅผ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค.
// ๋”ฐ๋ผ์„œ ์•„๋ž˜ ๋ฉ”์„œ๋“œ๋“ค์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์ด๋‹ค.
return {
// num: 0, // ํ”„๋กœํผํ‹ฐ๋Š” publicํ•˜๋ฏ€๋กœ ์€๋‹‰๋˜์ง€ ์•Š๋Š”๋‹ค.
increase() {
return ++num;
},
decrease() {
return num > 0 ? --num : 0;
}
};
}());
console.log(counter.increase()); // 1
console.log(counter.increase()); // 2
console.log(counter.decrease()); // 1
console.log(counter.decrease()); // 0

์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ํ†ตํ•ด ์ ‘๊ทผํ•  ์ˆ˜ ์—†์œผ๋ฉฐ, ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜ ์™ธ๋ถ€์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋Š” ์€๋‹‰๋œ ๋ณ€์ˆ˜๋‹ค.

 

 

๋…๋ฆฝ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ๊ฐ–๊ฒŒ ๋˜๋ฉด ์ž์œ  ๋ณ€์ˆ˜ ๊ฐ’์ด ๊ณต์œ ๋˜์ง€ ์•Š๋Š”๋‹ค.

// ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›๊ณ  ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜
// ์ด ํ•จ์ˆ˜๋Š” ์นด์šดํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž์œ  ๋ณ€์ˆ˜ counter๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํด๋กœ์ €๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
function makeCounter(aux) {
// ์นด์šดํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž์œ  ๋ณ€์ˆ˜
let counter = 0;
// ํด๋กœ์ €๋ฅผ ๋ฐ˜ํ™˜
return function () {
// ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ณด์กฐ ํ•จ์ˆ˜์— ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์œ„์ž„ํ•œ๋‹ค.
counter = aux(counter);
return counter;
};
}
// ๋ณด์กฐ ํ•จ์ˆ˜
function increase(n) {
return ++n;
}
// ๋ณด์กฐ ํ•จ์ˆ˜
function decrease(n) {
return --n;
}
// ํ•จ์ˆ˜๋กœ ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
// makeCounter ํ•จ์ˆ˜๋Š” ๋ณด์กฐ ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const increaser = makeCounter(increase);
console.log(increaser()); // 1
console.log(increaser()); // 2
// increaser ํ•จ์ˆ˜์™€๋Š” ๋ณ„๊ฐœ์˜ ๋…๋ฆฝ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์นด์šดํ„ฐ ์ƒํƒœ๊ฐ€ ์—ฐ๋™ํ•˜์ง€ ์•Š๋Š”๋‹ค.
const decrease = makeCounter(decrease);
console.log(decrease()); // -1
console.log(decrease()); // -2
  • makeCounter ํ•จ์ˆ˜๋Š” ๋ณด์กฐ ํ•จ์ˆ˜๋ฅผ ์ธ์ž๋กœ ์ „๋‹ฌ๋ฐ›๊ณ  ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜์ด๋‹ค.
  • ์ด ๊ณ ์ฐจ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋Š” ์ž์‹ ์ด ์ƒ์„ฑ๋์„ ๋•Œ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์ธ makeCounter ํ•จ์ˆ˜์˜ ์Šค์ฝ”ํ”„์— ์†ํ•œ counter ๋ณ€์ˆ˜๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํด๋กœ์ €๋‹ค.
  • ์ฃผ์˜) makeCounter ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•  ๋•Œ ๋ฐ˜ํ™˜๋œ ํ•จ์ˆ˜๋Š” ์ž์‹ ๋งŒ์˜ ๋…๋ฆฝ๋œ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ๊ฐ–๋Š”๋‹ค๋Š” ๊ฒƒ
  • increaser์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด makeCounter ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ์ดํ›„ makeCounter ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๋Š” ์†Œ๋ฉธ๋˜์ง€๋งŒ,
  • decreaser์— ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์‹œ makeCounter๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ์ƒˆ๋กœ์šด makeCounter ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
  • ํ•˜์ง€๋งŒ ๊ฐ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ์ฐธ์กฐ๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์†Œ๋ฉธ๋˜์ง€ ์•Š๋Š”๋‹ค.

 

 

๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ๊ณต์œ ํ•˜๋Š” ํด๋กœ์ €๋ฅผ ๋งŒ๋“ค์–ด์•ผ ์ž์œ  ๋ณ€์ˆ˜ ๊ฐ’์ด ์—ฐ๋™๋œ๋‹ค.

// ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜
// ์ด ํ•จ์ˆ˜๋Š” ์นด์šดํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž์œ  ๋ณ€์ˆ˜ counter๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํด๋กœ์ €๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
const counter = (function () {
// ์นด์šดํŠธ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž์œ  ๋ณ€์ˆ˜
let counter = 0;
// ํ•จ์ˆ˜๋ฅผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›๋Š” ํด๋กœ์ €๋ฅผ ๋ฐ˜ํ™˜
return function (aux) {
// ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ณด์กฐ ํ•จ์ˆ˜์— ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์œ„์ž„ํ•œ๋‹ค.
counter = aux(counter);
return counter;
};
}());
// ๋ณด์กฐ ํ•จ์ˆ˜
function increase(n) {
return ++n;
}
// ๋ณด์กฐ ํ•จ์ˆ˜
function decrease(n) {
return --n;
}
// ๋ณด์กฐ ํ•จ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ˜ธ์ถœ
console.log(counter(increase)); // 1
console.log(counter(increase)); // 2
// ์ž์œ  ๋ณ€์ˆ˜๋ฅผ ๊ณต์œ ํ•œ๋‹ค.
console.log(counter(decrease)); // 1
console.log(counter(decrease)); // 0

 

 

์บก์Аํ™”์™€ ์ •๋ณด ์€๋‹‰

์บก์Аํ™”๋Š” ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ํ”„๋กœํผํ‹ฐ์™€ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ๋™์ž‘์ธ ๋ฉ”์„œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

  • ์ •๋ณด ์€๋‹‰ : ์บก์Аํ™”๋Š” ๊ฐ์ฒด์˜ ํŠน์ • ํ”„๋กœํผํ‹ฐ๋‚˜ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ์ถœ ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉ
  • ์ •๋ณด ๋ณดํ˜ธ : ์ ์ ˆ์น˜ ๋ชปํ•œ ์ ‘๊ทผ์œผ๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€
  • ๊ฐ์ฒด ๊ฐ„์˜ ์˜์กด์„ฑ, ์ฆ‰ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ํšจ๊ณผ๊ฐ€ ์žˆ๋‹ค.

 

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ •๋ณด ์€๋‹‰์„ ์™„์ „ํ•˜๊ฒŒ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

const Person = (function () {
let _age = 0;
// ์ƒ์„ฑ์ž ํ•จ์ˆ˜
function Person(name, age) {
this.name = name; // public
_age = age;
}
// ํ”„๋กœํ† ํƒ€์ž… ๋ฉ”์„œ๋“œ
Person.prototype.sayHi = function () {
console.log(`Hi! My name is ${this.name}. I am ${_age}.`);
};
// ์ƒ์„ฑ์ž ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
return Person;
})();
const me = new Person("Lee", 20);
me.sayHi(); // Hi! My name is Lee. I am 20.
console.log(me.name); // Lee
console.log(me._age); // undefined
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ ‘๊ทผ ์ œํ•œ์ž๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋ชจ๋‘ public ํ•˜๋ฉฐ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์™ธ๋ถ€์— ๊ณต๊ฐœ๋˜์–ด ์žˆ๋‹ค.
  • name ํ”„๋กœํผํ‹ฐ๋Š” ํ˜„์žฌ ์™ธ๋ถ€๋กœ ๊ณต๊ฐœ๋˜์–ด ์žˆ์–ด ์ž์œ ๋กญ๊ฒŒ ์ฐธ์กฐ ๋ฐ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • _age ๋ณ€์ˆ˜๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜์˜ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ค์ •ํ•˜์—ฌ private ํ•˜๋„๋ก ์„ค์ •ํ•ด ์™ธ๋ถ€์—์„œ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
  • ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” Person ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ Person ์ƒ์„ฑ์ž ํ•จ์ˆ˜์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์†๋ฐ›์•„ ํ˜ธ์ถœํ•  Person.prototype.sayHi ๋ฉ”์„œ๋“œ๋Š” ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋œ ์ดํ›„ ํ˜ธ์ถœ๋œ๋‹ค.
  • Person ์ƒ์„ฑ์ž ํ•จ์ˆ˜์™€ sayHi ๋ฉ”์„œ๋“œ๋Š” ์ด๋ฏธ ์ข…๋ฃŒ๋˜์–ด ์†Œ๋ฉธํ•œ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜์˜ ์ง€์—ญ ๋ณ€์ˆ˜ _age๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋Š” ํด๋กœ์ €๋‹ค.

 

 

ํ•˜์ง€๋งŒ ์œ„ ์ฝ”๋“œ ๋˜ํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. Person ์ƒ์„ฑ์ž ํ•จ์ˆ˜๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•  ๊ฒฝ์šฐ ๋‹ค์Œ๊ณผ ๊ฐ™์ด _age ๋ณ€์ˆ˜์˜ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

const me = new Person("Lee", 20);
me.sayHi(); // Hi! My name is Lee. I am 20.
const you = new Person("Kim", 30);
you.sayHi(); // Hi! My name is Kim. I am 30.
// _age ๋ณ€์ˆ˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋œ๋‹ค!
me.sayHi(); // Hi! My name is Lee. I am 30.

์ด๋Š” Person.prototype.sayHi ๋ฉ”์„œ๋“œ๊ฐ€ ๋‹จ ํ•œ ๋ฒˆ ์ƒ์„ฑ๋˜๋Š” ํด๋กœ์ €์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ํ˜„์ƒ์ด๋‹ค.

์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ƒ์„ฑ๋œ๋‹ค. ์ด๋•Œ Person.prototype.sayHi ๋ฉ”์„œ๋“œ๋Š” ์ž์‹ ์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„์ธ ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜์˜ ์‹คํ–‰ ์ปจํ…์ŠคํŠธ์˜ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์˜ ์ฐธ์กฐ๋ฅผ [[Environment]]์— ์ €์žฅํ•˜์—ฌ ๊ธฐ์–ตํ•œ๋‹ค.

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

 

 

์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜

var funcs = [];
for (var i = 0; i < 3; i++) {
funcs[i] = function () { return i; };
}
for (var j = 0; j < funcs.length; j++) {
console.log(funcs[j]());
// 3
// 3
// 3
}
  • 0, 1, 2๋ฅผ ๋ฐ˜ํ™˜๋˜์–ด์•ผ ํ•˜์ง€๋งŒ 3, 3, 3์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
  • ๊ทธ ์ด์œ ๋Š” var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ i ๋ณ€์ˆ˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๊ฐ€ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๊ธฐ ๋•Œ๋ฌธ์— ์ „์—ญ ๋ณ€์ˆ˜์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ funcs[j]๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜ i๋ฅผ ์ฐธ์กฐํ•˜์—ฌ 3์ด ์ถœ๋ ฅ์ด ๋œ๋‹ค.

 

 

๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก ์ˆ˜์ •

var funcs = [];
for (var i = 0; i < 3; i++) {
funcs[i] = (function (id) {
return function () {
return id;
};
}(i));
}
for (var j = 0; j < funcs.length; j++) {
console.log(funcs[j]());
// 0
// 1
// 2
}
  • ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜ i์— ํ˜„์žฌ ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์•„ ๋งค๊ฐœ๋ณ€์ˆ˜ id์— ํ• ๋‹นํ•œ ํ›„ ์ค‘์ฒฉ ํ•จ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์ข…๋ฃŒ๋œ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ๋ฐ˜ํ™˜๋œ ์ค‘์ฒฉํ•จ์ˆ˜๋Š” ์ƒ์œ„ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜๋Š” ํด๋กœ์ €์ด๊ธฐ์— ๋งค๊ฐœ๋ณ€์ˆ˜ id๋Š” ์ž์œ  ๋ณ€์ˆ˜๋กœ์„œ ํ•ด๋‹น ์ค‘์ฒฉ ํ•จ์ˆ˜์— ๋ฌถ์—ฌ์žˆ๊ฒŒ ๋œ๋‹ค.

 

 

๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„๋ฅผ ๊ฐ–๋Š” let์„ ์‚ฌ์šฉํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋” ๊น”๋”ํ•˜๊ฒŒ ํ•ด๊ฒฐ

const funcs = [];
for (let i = 0; i < 3; i++) {
funcs[i] = function () { return i; };
}
for (let i = 0; i < funcs.length; i++) {
console.log(funcs[i]());
// 0
// 1
// 2
}

  • for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ let ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋ฐ˜๋ณต ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค for ๋ฌธ ์ฝ”๋“œ ๋ธ”๋ก์˜ ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์ด ์ƒ์„ฑ๋œ๋‹ค.
  • ๋งŒ์•ฝ for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ ์ •์˜ํ•œ ํ•จ์ˆ˜๊ฐ€ ์žˆ๋‹ค๋ฉด ์ด ํ•จ์ˆ˜์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์˜ ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์ด๋‹ค.
  • ์ด๋•Œ ํ•จ์ˆ˜์˜ ์ƒ์œ„ ์Šค์ฝ”ํ”„๋Š” for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก์ด ๋ฐ˜๋ณต ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์‹๋ณ„์ž(for ๋ฌธ์˜ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์—์„œ ์„ ์–ธํ•œ ์ดˆ๊ธฐํ™” ๋ณ€์ˆ˜ ๋ฐ for ๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด์—์„œ ์„ ์–ธํ•œ ์ง€์—ญ ๋ณ€์ˆ˜ ๋“ฑ)์˜ ๊ฐ’์„ ์œ ์ง€ํ•ด์•ผ ํ•œ๋‹ค.
  • ์ด๋ฅผ ์œ„ํ•ด for ๋ฌธ์ด ๋ฐ˜๋ณต๋  ๋•Œ๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜์—ฌ ์‹๋ณ„์ž์˜ ๊ฐ’์„ ์œ ์ง€ํ•œ๋‹ค.

 

 

  • ์ด์ฒ˜๋Ÿผ let์ด๋‚˜ const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ˜๋ณต๋ฌธ์€ ์ฝ”๋“œ ๋ธ”๋ก์„ ๋ฐ˜๋ณต ์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์„ ์ƒ์„ฑํ•˜์—ฌ ๋ฐ˜๋ณตํ•  ๋‹น์‹œ์˜ ์ƒํƒœ๋ฅผ ๋งˆ์น˜ ์Šค๋ƒ…์ˆ์„ ์ฐ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ €์žฅ
  • ๋‹จ, ์ด๋Š” ๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค.
  • ๋ฐ˜๋ณต๋ฌธ์˜ ์ฝ”๋“œ ๋ธ”๋ก ๋‚ด๋ถ€์— ํ•จ์ˆ˜ ์ •์˜๊ฐ€ ์—†๋Š” ๋ฐ˜๋ณต๋ฌธ์ด ์ƒ์„ฑํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ์€ ๋ฐ˜๋ณต ์งํ›„, ์•„๋ฌด๋„ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.

 

 

๋˜ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ฒ•์ธ ๊ณ ์ฐจ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

// ์š”์†Œ๊ฐ€ 3๊ฐœ์ธ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์š”์†Œ๋กœ ์ถ”๊ฐ€
// ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€๋œ ํ•จ์ˆ˜๋“ค์€ ๋ชจ๋‘ ํด๋กœ์ €๋‹ค.
const funcs = Array.from(new Array(3), (_, i) => () => i);
// ๋ฐฐ์—ด์˜ ์š”์†Œ๋กœ ์ถ”๊ฐ€๋œ ํ•จ์ˆ˜๋“ค์„ ์ˆœ์ฐจ์ ์œผ๋กœ ํ˜ธ์ถœ
funcs.forEach(f => console.log(f())); // 0 1 2

์ด ๋ฐฉ๋ฒ•์€ ๋ณ€์ˆ˜์™€ ๋ฐ˜๋ณต๋ฌธ์˜ ์‚ฌ์šฉ์„ ์–ต์ œํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๋ฅผ ์ค„์ด๊ณ  ๊ฐ€๋…์„ฑ์„ ์ข‹๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

 

 

์ €์ž‘์žํ‘œ์‹œ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

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

๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘  (0) 2024.05.08
์Šค์ฝ”ํ”„ ์ฒด์ธ  (0) 2024.05.08
์‹คํ–‰ ์ปจํ…์ŠคํŠธ  (0) 2024.03.23
์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ๋น„๊ต  (0) 2024.03.14
์œ ์‚ฌ ๋ฐฐ์—ด ๊ฐ์ฒด, ์ดํ„ฐ๋Ÿฌ๋ธ”, ๋ž˜ํผ ๊ฐ์ฒด  (0) 2024.03.13
  • ํด๋กœ์ €
  • ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ”„(= ์ •์  ์Šค์ฝ”ํ”„)
  • ํด๋กœ์ €์™€ ๋ ‰์‹œ์ปฌ ํ™˜๊ฒฝ
  • ํด๋กœ์ €์˜ ํ™œ์šฉ
  • ์บก์Аํ™”์™€ ์ •๋ณด ์€๋‹‰
  • ์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” ์‹ค์ˆ˜
'Frontend/JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ๋ ‰์‹œ์ปฌ ์Šค์ฝ”ํ•‘
  • ์Šค์ฝ”ํ”„ ์ฒด์ธ
  • ์‹คํ–‰ ์ปจํ…์ŠคํŠธ
  • ์›์‹œ ๊ฐ’๊ณผ ๊ฐ์ฒด์˜ ๋น„๊ต
wam
wam

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

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.