This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

์ด๋ฒคํŠธ ๋ฃจํ”„

JavaScript์˜ ๋Ÿฐํƒ€์ž„ ๋ชจ๋ธ์€ ์ฝ”๋“œ์˜ ์‹คํ–‰, ์ด๋ฒคํŠธ์˜ ์ˆ˜์ง‘๊ณผ ์ฒ˜๋ฆฌ, ํ์— ๋Œ€๊ธฐ ์ค‘์ธ ํ•˜์œ„ ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ด๋ฒคํŠธ ๋ฃจํ”„์— ๊ธฐ๋ฐ˜ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, C ๋˜๋Š” Java ๋“ฑ ๋‹ค๋ฅธ ์–ธ์–ด๊ฐ€ ๊ฐ€์ง„ ๋ชจ๋ธ๊ณผ๋Š” ์ƒ๋‹นํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

๋Ÿฐํƒ€์ž„ ๊ฐœ๋…

์—ฌ๊ธฐ์„œ๋Š” ์ด๋ก ์ ์ธ ๋ชจ๋ธ๋งŒ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ˜„๋Œ€์ ์ธ JavaScript ์—”์ง„์€ ์•„๋ž˜์˜ ๊ฐœ๋…์„ ๊ตฌํ˜„ํ•˜๊ณ  ๊ณ ๋„๋กœ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ์  ํ‘œํ˜„

์Šคํƒ, ํž™, ํ

์Šคํƒ

ํ•จ์ˆ˜์˜ ํ˜ธ์ถœ๋“ค์€ 'ํ”„๋ ˆ์ž„' ์Šคํƒ์„ ํ˜•์„ฑํ•ฉ๋‹ˆ๋‹ค.

js
function foo(b) {
  const a = 10;
  return a + b + 11;
}

function bar(x) {
  const y = 3;
  return foo(x * y);
}

const baz = bar(7); // 42๋ฅผ baz์— ํ• ๋‹น

์œ„ ์ฝ”๋“œ์˜ ์‹คํ–‰ ์ˆœ์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  1. bar๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, bar์˜ ์ธ์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ํฌํ•จํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. bar๊ฐ€ foo๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ, foo์˜ ์ธ์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋˜์–ด ์ฒซ ๋ฒˆ์งธ ํ”„๋ ˆ์ž„์˜ ์œ„๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
  3. foo๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด, ๋งจ ์œ„์˜ ํ”„๋ ˆ์ž„ ์š”์†Œ๋ฅผ ์Šคํƒ ๋ฐ–์œผ๋กœ ๊บผ๋ƒ…๋‹ˆ๋‹ค(bar ํ˜ธ์ถœ ํ”„๋ ˆ์ž„๋งŒ ๋‚จ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค).
  4. bar๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด, ์Šคํƒ์ด ๋น„์–ด์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ธ์ˆ˜์™€ ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์Šคํƒ ๋ฐ”๊นฅ์— ์ €์žฅ๋˜๋ฏ€๋กœ, ๋ฐ”๊นฅ ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋œ ํ›„์—๋„ ๊ณ„์† ์กด์žฌํ•  ์ˆ˜ ์žˆ์Œ์„ ์œ ์˜ํ•˜์„ธ์š”. ์ค‘์ฒฉ ํ•จ์ˆ˜์—์„œ ์ง€์—ญ ๋ณ€์ˆ˜์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ด์œ ๊ฐ€ ์ด๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํž™

๊ฐ์ฒด๋Š” ํž™์— ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ํž™์€ ๋‹จ์ˆœํžˆ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฐ (๊ทธ๋ฆฌ๊ณ  ๋Œ€๋ถ€๋ถ„ ๊ตฌ์กฐํ™”๋˜์ง€ ์•Š์€) ์˜์—ญ์„ ์ง€์นญํ•˜๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค.

ํ

JavaScript ๋Ÿฐํƒ€์ž„์€ ๋ฉ”์‹œ์ง€ ํ, ์ฆ‰ ์ฒ˜๋ฆฌํ•  ๋ฉ”์‹œ์ง€์˜ ๋Œ€๊ธฐ์—ด์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ๋ฉ”์‹œ์ง€์—๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ์ž„์˜ ์‹œ์ ์—, ๋Ÿฐํƒ€์ž„์€ ๋Œ€๊ธฐ์—ด์—์„œ ๊ฐ€์žฅ ์˜ค๋ž˜๋œ ๋ฉ”์‹œ์ง€๋ถ€ํ„ฐ ํ์—์„œ ๊บผ๋‚ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋Ÿฐํƒ€์ž„์€ ๊บผ๋‚ธ ๋ฉ”์‹œ์ง€๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ, ๋ฉ”์‹œ์ง€์— ์—ฐ๊ฒฐ๋œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์‚ฌ์šฉํ•  ์ƒˆ๋กœ์šด ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ์ฒ˜๋ฆฌ๋Š” ์Šคํƒ์ด ๋‹ค์‹œ ํ…… ๋นŒ ๋•Œ๊นŒ์ง€ ๊ณ„์†๋ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„, ํ์— ๋ฉ”์‹œ์ง€๊ฐ€ ๋‚จ์•„์žˆ์œผ๋ฉด ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌ๋ฅผ ๊ณ„์† ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฒคํŠธ ๋ฃจํ”„

์ด๋ฒคํŠธ ๋ฃจํ”„๋Š” ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ๋•Œ ๋ณดํ†ต ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์—์„œ ๊ทธ ์ด๋ฆ„์„ ์–ป์—ˆ์œผ๋ฉฐ, ๋Œ€๋žต ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

js
while (queue.waitForMessage()) {
  queue.processNextMessage();
}

queue.waitForMessage() ํ•จ์ˆ˜๋Š” ํ˜„์žฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ๋„์ฐฉํ•  ๋•Œ๊นŒ์ง€ ๋™๊ธฐ์ ์œผ๋กœ ๋Œ€๊ธฐํ•ฉ๋‹ˆ๋‹ค.

"Run-to-completion"

๊ฐ ๋ฉ”์‹œ์ง€์˜ ์ฒ˜๋ฆฌ๋Š” ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€์˜ ์ฒ˜๋ฆฌ๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— ์™„์ „ํžˆ ๋๋‚ฉ๋‹ˆ๋‹ค.

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

์ด ๋ชจ๋ธ์˜ ๋‹จ์ ์€, ๋งŒ์•ฝ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋„ˆ๋ฌด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํด๋ฆญ์ด๋‚˜ ์Šคํฌ๋กค๊ณผ ๊ฐ™์€ ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” "์Šคํฌ๋ฆฝํŠธ ์‘๋‹ต ์—†์Œ" ๋Œ€ํ™”์ƒ์ž๋ฅผ ํ‘œ์‹œํ•ด์„œ ์ด ๋ฌธ์ œ๋ฅผ ์™„ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์ž๋กœ์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋ฉ”์‹œ์ง€ ์ฒ˜๋ฆฌ๋ฅผ ๊ฐ€๋ณ๊ฒŒ ์œ ์ง€ํ•˜๊ณ , ๊ฐ€๋Šฅํ•˜๋‹ค๋ฉด ํ•˜๋‚˜์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ๋‚˜๋ˆ„๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋ฉ”์‹œ์ง€ ์ถ”๊ฐ€ํ•˜๊ธฐ

์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š”, ์ˆ˜์‹ ๊ธฐ๊ฐ€ ๋ถ€์ฐฉ๋œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”์‹œ์ง€๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์ˆ˜์‹ ๊ธฐ๊ฐ€ ์—†์œผ๋ฉด, ์ด๋ฒคํŠธ๋Š” ์œ ์‹ค๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํด๋ฆญ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ๋ถ™์€ ์š”์†Œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋ฉ”์‹œ์ง€๊ฐ€ ์ƒˆ๋กœ ์ถ”๊ฐ€๋˜๋Š” ์‹์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค.

setTimeout ํ•จ์ˆ˜๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ํ์— ์ถ”๊ฐ€ํ•  ๋ฉ”์‹œ์ง€, ๋‘ ๋ฒˆ์งธ๋Š” ์‹œ๊ฐ„ ๊ฐ’(์„ ํƒ ์‚ฌํ•ญ, ๊ธฐ๋ณธ ๊ฐ’ 0)์ž…๋‹ˆ๋‹ค. ์‹œ๊ฐ„ ๊ฐ’์€ ๋ฉ”์‹œ์ง€๋ฅผ ํ์— ์ถ”๊ฐ€ํ•˜๊ธฐ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆด (์ตœ์†Œ) ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ํ์— ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๊ฐ€ ์—†๊ณ  ์Šคํƒ์ด ๋น„์–ด์žˆ๋‹ค๋ฉด setTimeout์˜ ๋ฉ”์‹œ์ง€๋Š” ๋”œ๋ ˆ์ด ์งํ›„ ์ฆ‰์‹œ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด setTimeout์€ ์•ž์„  ๋ฉ”์‹œ์ง€์˜ ์ฒ˜๋ฆฌ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‘ ๋ฒˆ์งธ ๊ฐ’์€ ์ •ํ™•ํ•œ ์ง€์—ฐ์‹œ๊ฐ„์ด ์•„๋‹Œ, '์ตœ์†Œ' ์ง€์—ฐ ์‹œ๊ฐ„๋งŒ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

๋‹ค์Œ์€ setTimeout์ด ํƒ€์ด๋จธ ๋งŒ๋ฃŒ ์งํ›„ ์ฆ‰์‹œ ์‹คํ–‰๋˜์ง€ ์•Š๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.

js
const seconds = new Date().getTime() / 1000;

setTimeout(function () {
  // "2"๋ฅผ ์ถœ๋ ฅ, ์ฆ‰ 500๋ฐ€๋ฆฌ์ดˆ๊ฐ€ ์ง€๋‚œ ํ›„ ์ฆ‰์‹œ ์‹คํ–‰๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ
  console.log(`${new Date().getTime() / 1000 - seconds}์ดˆ ํ›„ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.`);
}, 500);

while (true) {
  if (new Date().getTime() / 1000 - seconds >= 2) {
    console.log("์ข‹์•„์š”, 2์ดˆ๊ฐ„ ๋ฐ˜๋ณตํ–ˆ์Šต๋‹ˆ๋‹ค.");
    break;
  }
}

0์˜ ์ง€์—ฐ ์‹œ๊ฐ„

0์˜ ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด ์ฝœ๋ฐฑ์„ 0๋ฐ€๋ฆฌ์ดˆ ํ›„์— ํ˜ธ์ถœํ•œ๋‹ค๋Š” ๋œป์€ ์•„๋‹™๋‹ˆ๋‹ค. setTimeout์˜ ์ง€์—ฐ ์‹œ๊ฐ„์— 0 ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ์ง€์ •ํ•˜๊ณ  ํ˜ธ์ถœํ•˜๋”๋ผ๋„ ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋Š” ์ฆ‰์‹œ ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

setTimeout์— ํŠน์ • ์ง€์—ฐ ์‹œ๊ฐ„์„ ์ง€์ •ํ•˜๋”๋ผ๋„, ํ์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ๋ชจ๋“  ๋ฉ”์‹œ์ง€์˜ ์ฒ˜๋ฆฌ๋Š” ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค.

js
(function () {
  console.log("์‹œ์ž‘");

  setTimeout(function cb() {
    console.log("์ฝœ๋ฐฑ 1: ์ฝœ๋ฐฑ ๋ฉ”์‹œ์ง€");
  }); // has a default time value of 0

  console.log("ํ‰๋ฒ”ํ•œ ๋ฉ”์‹œ์ง€");

  setTimeout(function cb1() {
    console.log("์ฝœ๋ฐฑ 2: ์ฝœ๋ฐฑ ๋ฉ”์‹œ์ง€");
  }, 0);

  console.log("์ข…๋ฃŒ");
})();
js
(() => {
  console.log("์‹œ์ž‘");

  setTimeout(() => {
    console.log("์ฝœ๋ฐฑ 1: ์ฝœ๋ฐฑ ๋ฉ”์‹œ์ง€");
  }); // ๊ธฐ๋ณธ์ ์œผ๋กœ ์‹œ๊ฐ„ ๊ฐ’์„ 0์œผ๋กœ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

  console.log("this is just a message");

  setTimeout(() => {
    console.log("์ฝœ๋ฐฑ 2: ์ฝœ๋ฐฑ ๋ฉ”์‹œ์ง€");
  }, 0);

  console.log("this is the end");
})();

// "์‹œ์ž‘"
// "ํ‰๋ฒ”ํ•œ ๋ฉ”์‹œ์ง€"
// "์ข…๋ฃŒ"
// "์ฝœ๋ฐฑ 1: ์ฝœ๋ฐฑ ๋ฉ”์‹œ์ง€"
// "์ฝœ๋ฐฑ 2: ์ฝœ๋ฐฑ ๋ฉ”์‹œ์ง€"

๋‹ค์ˆ˜์˜ ๋Ÿฐํƒ€์ž„ ๊ฐ„ ํ†ต์‹ 

์›น ์›Œ์ปค๋‚˜ ๊ต์ฐจ ์ถœ์ฒ˜ iframe์€ ์ž์‹ ๋งŒ์˜ ์Šคํƒ, ํž™, ๋ฉ”์‹œ์ง€ ํ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๋Ÿฐํƒ€์ž„์€ postMessage ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๋ฐฉ์‹์œผ๋กœ๋งŒ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒ๋Œ€๊ฐ€ message ์ด๋ฒคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์žˆ์„ ๋•Œ, postMessage๋Š” ์ƒ๋Œ€ ๋Ÿฐํƒ€์ž„์— ๋ฉ”์‹œ์ง€๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋…ผ ๋ธ”๋กœํ‚น

๋‹ค๋ฅธ ๋งŽ์€ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ JavaScript๋Š” ์ ˆ๋Œ€ ๋ธ”๋กœํ‚น ์—ฐ์‚ฐ์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋…ผ ๋ธ”๋กœํ‚น์€ ์ด๋ฒคํŠธ ๋ฃจํ”„ ๋ชจ๋ธ์˜ ๋ฌด์ฒ™ ํฅ๋ฏธ๋กœ์šด ํŠน์ง•์œผ๋กœ, ๋Œ€๋ถ€๋ถ„์˜ ์ž…์ถœ๋ ฅ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฒคํŠธ์™€ ์ฝœ๋ฐฑ์„ ํ†ตํ•ด ์ˆ˜ํ–‰๋˜๋ฏ€๋กœ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด IndexedDB ์งˆ์˜๋‚˜ XHR ์š”์ฒญ์˜ ๋ฐ˜ํ™˜์„ ๋Œ€๊ธฐ ์ค‘์ด๋”๋ผ๋„, ์—ฌ์ „ํžˆ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋“ฑ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

alert์ด๋‚˜ ๋™๊ธฐ์  XHR๊ณผ ๊ฐ™์€ ๋ ˆ๊ฑฐ์‹œ ์˜ˆ์™ธ๊ฐ€ ์กด์žฌํ•˜๊ธด ํ•˜์ง€๋งŒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์˜ˆ์™ธ์— ๋Œ€ํ•œ ์˜ˆ์™ธ๋Š” ์กฐ์‹ฌํ•˜์„ธ์š”(๊ทธ๋Ÿฌ๋‚˜ ์ด๋Ÿฐ ์˜ˆ์™ธ๋Š” ๊ตฌํ˜„์ฒด์˜ ๋ฒ„๊ทธ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค).

๊ฐ™์ด ๋ณด๊ธฐ