JavaScript å®è¡ã¢ãã«
ãã®ãã¼ã¸ã§ã¯ãJavaScript ã©ã³ã¿ã¤ã ç°å¢ã®åºæ¬çãªä»çµã¿ã«ã¤ãã¦è§£èª¬ãã¾ãããã®ã¢ãã«ã¯ä¸»ã«çè«çãã¤æ½è±¡çãªãã®ã§ãããç¹å®ã®ãã©ãããã©ã¼ã ãå®è£ ã«é¢ãã詳細ã¯å«ã¾ãã¦ãã¾ãããç¾è¡ã® JavaScript ã¨ã³ã¸ã³ã¯ãããã§èª¬æããæå³ã¥ããå¤§å¹ ã«æé©åãã¦ãã¾ãã
ãã®ãã¼ã¸ã¯ãªãã¡ã¬ã³ã¹ã§ããèªè ã C ã Java ãªã©ã®ä»ã®ããã°ã©ãã³ã°è¨èªã®å®è¡ã¢ãã«ã«ã¤ãã¦ãã§ã«çè§£ãã¦ãããã¨ãæ³å®ãã¦ãã¾ããã¾ãããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ãããã°ã©ãã³ã°è¨èªã«ãããæ¢åã®æ¦å¿µãå¤ç¨ãã¦ãã¾ãã
ã¨ã³ã¸ã³ã¨ãã¹ã
JavaScript ãå®è¡ããã«ã¯ãJavaScript ã¨ã³ã¸ã³ã¨ãã¹ãç°å¢ã¨ãã 2 ã¤ã®ã½ããã¦ã§ã¢ã®é£æºãæ±ãããã¾ãã
JavaScript ã¨ã³ã¸ã³ã¯ãECMAScript (JavaScript) è¨èªãå®è£ ãã䏿 ¸ã¨ãªãæ©è½ãæä¾ãã¾ãããã®ã¨ã³ã¸ã³ã¯ã½ã¼ã¹ã³ã¼ããåãåãããããæ§æè§£æãã¦å®è¡ãã¾ããããããæå³ã®ããåºåãçæããããå¤é¨ãªã½ã¼ã¹ã¨é£æºããããã»ãã¥ãªãã£ãããã©ã¼ãã³ã¹ã«é¢é£ããã¡ã«ããºã ãå®è£ ããããããªã©ãå¤é¨ã¨ããåããè¡ãããã«ã¯ããã¹ãç°å¢ã«ãã£ã¦æä¾ãããç°å¢åºæã®è¿½å ã¡ã«ããºã ãå¿ è¦ã¨ãªãã¾ããä¾ãã°ãã¦ã§ããã©ã¦ã¶ã¼å ã§ã® JavaScript ã®å®è¡ã«ããã¦ã¯ãHTML DOM ããã¹ãç°å¢ã¨ãªãã¾ããã¾ããNode.js ã¯ããµã¼ãã¼ãµã¤ãã§ JavaScript ãå®è¡ã§ããããã«ããå¥ã®ãã¹ãç°å¢ã§ãã
ãã®ãªãã¡ã¬ã³ã¹ã§ã¯ä¸»ã« ECMAScript ã§å®ç¾©ãããä»çµã¿ã«ç¦ç¹ãå½ã¦ã¦ãã¾ãããææãHTML 仿§ã§å®ç¾©ãããä»çµã¿ã«ã¤ãã¦ã触ãã¾ããããã㯠Node.js ã Deno ã¨ãã£ãä»ã®ãã¹ãç°å¢ã§ãå¤ãã®å ´åæ¡ç¨ããã¦ãã¾ããããã«ãããã¦ã§ãä¸ããã³ãã以å¤ã®å ´é¢ã§ä½¿ç¨ããã JavaScript ã®å®è¡ã¢ãã«ã«ã¤ãã¦ãä¸è²«ããå ¨ä½åããä¼ããããã¨ãã§ãã¾ãã
ã¨ã¼ã¸ã§ã³ãå®è¡ã¢ãã«
JavaScript 仿§æ¸ã§ã¯ãJavaScript ã®ããããã®å®è¡ä¸»ä½ã¯ã¨ã¼ã¸ã§ã³ãã¨å¼ã°ããã³ã¼ãå®è¡ã®ããã®æ©è½ãç¶æãã¦ãã¾ãã
- ï¼ãªãã¸ã§ã¯ãã®ï¼ãã¼ã: ããã¯ãã¡ã¢ãªã¼å
ã®å¤§è¦æ¨¡ãªï¼ä¸»ã«æ§é åããã¦ããªãï¼é åãæãããã®åãªãåç§°ã§ããããã°ã©ã å
ã§ãªãã¸ã§ã¯ãã使ãããã«ã¤ãã¦ããã®é åã«ãã¼ã¿ãæ ¼ç´ããã¦ããã¾ãããªããå
±æã¡ã¢ãªã¼ã®å ´åãããããã®ã¨ã¼ã¸ã§ã³ãã¯èªèº«ã®ãã¼ãã¨ãèªèº«ã®ãã¼ã¸ã§ã³ã®
SharedArrayBufferãªãã¸ã§ã¯ããæã¡ã¾ããããããã¡ã¼ã«ãã£ã¦è¡¨ãããåºç¤ã¨ãªãã¡ã¢ãªã¼ã¯å ±æããã¦ãã¾ãã - ï¼ã¸ã§ãã®ï¼ãã¥ã¼: ãã㯠HTML ã®ä¸çã§ã¯ï¼ã¾ãä¸è¬çã«ï¼ã¤ãã³ãã«ã¼ãã¨ãã¦ç¥ããã¦ãããJavaScript ãã·ã³ã°ã«ã¹ã¬ããã§ãã£ã¦ããéåæããã°ã©ãã³ã°ããããã¨ãã§ãã¾ããä¸è¬çã«å å ¥ãå åºã (FIFO) æ¹å¼ã§ããããããã¥ã¼ã¨å¼ã°ãã¦ãã¾ããã¤ã¾ããå ã«è¿½å ãããã¸ã§ãããå¾ã«è¿½å ãããã¸ã§ããããå ã«å®è¡ããã¾ãã
- ï¼å®è¡ã³ã³ããã¹ãã®ï¼ã¹ã¿ãã¯: ããã¯ã³ã¼ã«ã¹ã¿ãã¯ã¨ãã¦ç¥ããã¦ããã颿°ã®ãããªå®è¡ã³ã³ããã¹ãã¸ã®é²å ¥ãéåºãéãã¦ãå¶å¾¡ããã¼ãç§»è¡ãããã¨ãã§ãã¾ããããã¯å¾å ¥ãå åºã (LIFO) ã§ãããããã¹ã¿ãã¯ã¨å¼ã°ãã¦ãã¾ããåã¸ã§ãã¯ãï¼ç©ºã®ï¼ã¹ã¿ãã¯ã«æ°ãããã¬ã¼ã ãããã·ã¥ãããã¨ã§éå§ãããã¹ã¿ãã¯ã空ã«ãããã¨ã§çµäºãã¾ãã
ãããã¯ãããããç°ãªããã¼ã¿ã管çãã 3 ã¤ã®ç°ãªããã¼ã¿æ§é ã§ãããã¥ã¼ã¨ã¹ã¿ãã¯ã«ã¤ãã¦ã¯ãå¾ã®ç« ã§è©³ãã説æãã¾ãããã¼ãã¡ã¢ãªã¼ã®å²ãå½ã¦ã¨è§£æ¾ã®è©³ç´°ã«ã¤ãã¦ã¯ãã¡ã¢ãªã¼ç®¡çãã覧ãã ããã
åã¨ã¼ã¸ã§ã³ãã¯ã¹ã¬ããã«ç¸å½ãã¾ãï¼ãªãããã®å®è£ ã®åºç¤ã¨ãªããã®ãå®éã®ãªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã®ã¹ã¬ããã§ãããã©ããã¯å ´åã«ããã¾ãï¼ãåã¨ã¼ã¸ã§ã³ãã¯ãäºãã«åæçã«ã¢ã¯ã»ã¹ã§ããè¤æ°ã®ã¬ã«ã ï¼ãããã¯ã°ãã¼ãã«ãªãã¸ã§ã¯ã㨠1 対 1 ã§å¯¾å¿ãã¾ãï¼ãææãããã¨ãå¯è½ã§ããã®ããåä¸ã®å®è¡ã¹ã¬ããå ã§å®è¡ãããå¿ è¦ãããã¾ããã¾ããã¨ã¼ã¸ã§ã³ãã«ã¯åä¸ã®ã¡ã¢ãªã¼ã¢ãã«ãããããªãã«ã¨ã³ãã£ã¢ã³ã§ãããã©ãããåæçã«ãããã¯ããããã©ãããååæä½ãããã¯ããªã¼ã§ãããã©ãããªã©ã示ããã¾ãã
ã¦ã§ãä¸ã®ã¨ã¼ã¸ã§ã³ãã«ã¯ã次ã®ãããªãã®ãããã¾ãã
- é¡ä¼¼ãªãªã¸ã³ã¦ã£ã³ãã¦ã¨ã¼ã¸ã§ã³ã (Similar-origin window agent)ããã¾ãã¾ãª
Windowãªãã¸ã§ã¯ããå«ã¾ãã¦ãããã®ã§ãããäºãã«ç´æ¥çã«ããããã¯document.domainã使ç¨ãã¦å°éã§ããå¯è½æ§ãããã¾ããã¦ã£ã³ãã¦ããªãªã¸ã³ãã¼ä»ãã®å ´åãåä¸ãªãªã¸ã³ã®ã¦ã£ã³ãã¦å士ã®ã¿ãç¸äºã«å°éã§ãã¾ãã - å°ç¨ã¯ã¼ã«ã¼ã¨ã¼ã¸ã§ã³ã (Dedicated worker agent)ãåä¸ã®
DedicatedWorkerGlobalScopeãå«ã¾ãã¦ãã¾ãã - å
±æã¯ã¼ã«ã¼ã¨ã¼ã¸ã§ã³ã (Shared worker agent)ãåä¸ã®
SharedWorkerGlobalScopeãå«ã¾ãã¦ãã¾ãã - ãµã¼ãã¹ã¯ã¼ã«ã¼ã¨ã¼ã¸ã§ã³ã (Service worker agent)ãåä¸ã®
ServiceWorkerGlobalScopeãå«ã¾ãã¦ãã¾ãã - ã¯ã¼ã¯ã¬ããã¨ã¼ã¸ã§ã³ã (Worklet agent)ãåä¸ã®
WorkletGlobalScopeãå«ã¾ãã¦ãã¾ãã
è¨ãæããã°ãããããã®ã¯ã¼ã«ã¼ã¯ç¬èªã®ã¨ã¼ã¸ã§ã³ããçæãã¾ããã1 ã¤ä»¥ä¸ã®ã¦ã£ã³ãã¦ãåãã¨ã¼ã¸ã§ã³ãå ã«åå¨ããå ´åãããã¾ããé常ã¯ãã¡ã¤ã³ææ¸ã¨ãããã¨åããªãªã¸ã³ãæã¤ iframe ãªã©ã該å½ãã¾ããNode.js ã§ã¯ãã¯ã¼ã«ã¼ã¹ã¬ããã¨å¼ã°ããåæ§ã®æ¦å¿µãå©ç¨å¯è½ã§ãã
次ã®å³ã¯ãã¨ã¼ã¸ã§ã³ãã®å®è¡ã¢ãã«ã示ãã¦ãã¾ãã
ã¬ã«ã
ããããã®ã¨ã¼ã¸ã§ã³ãã¯ã1 ã¤ä»¥ä¸ã®ã¬ã«ã (realm) ãææãã¦ãã¾ããJavaScript ã³ã¼ãã¯èªã¿è¾¼ã¾ããéã«ç¹å®ã®ã¬ã«ã ã«é¢é£ä»ããããå¥ã®ã¬ã«ã ããå¼ã³åºãããå ´åã§ãããã®é¢é£ä»ãã¯å¤ããã¾ãããã¬ã«ã ã¯ä»¥ä¸ã®æ å ±ã§æ§æããã¦ãã¾ãã
ArrayãArray.prototypeãªã©ã®å å¨ãªãã¸ã§ã¯ãã®ä¸è¦§ã- ã°ãã¼ãã«å¤æ°ã
globalThisã®å¤ãã°ãã¼ãã«ãªãã¸ã§ã¯ã - ãã³ãã¬ã¼ããªãã©ã«é åã®ãã£ãã·ã¥ãåãã¿ã°ä»ããã³ãã¬ã¼ããªãã©ã«å¼ãè©ä¾¡ããã¨ãã¿ã°ã¯å¸¸ã«åãé åãªãã¸ã§ã¯ããåãåãããã§ãã
ã¦ã§ãä¸ã§ã¯ãã¬ã«ã ã¨ã°ãã¼ãã«ãªãã¸ã§ã¯ãã¯ï¼å¯¾ï¼ã§å¯¾å¿ãã¦ãã¾ããã°ãã¼ãã«ãªãã¸ã§ã¯ãã¯ãWindowãWorkerGlobalScopeãWorkletGlobalScope ã®ããããã§ãããããã£ã¦ãä¾ãã°ããã¹ã¦ã® iframe ã¯ã親ã¦ã£ã³ãã¦ã¨åãã¨ã¼ã¸ã§ã³ãå
ã«ããå ´åã§ããããããç°ãªãã¬ã«ã ã§å®è¡ããã¾ãã
ã°ãã¼ãã«ãªãã¸ã§ã¯ãã®ã¢ã¤ãã³ãã£ãã£ã«ã¤ãã¦è¨åããéãé常ã¯ãã¬ã«ã ãã¨ããè¨èãç»å ´ãã¾ããä¾ãã°ãArray.isArray() ã Error.isError() ã¨ãã£ãã¡ã½ãããå¿
è¦ã«ãªãã®ã¯ãå¥ã®ã¬ã«ã ã§æ§ç¯ãããé
åã¯ãç¾å¨ã®ã¬ã«ã ã«ãã Array.prototype ãªãã¸ã§ã¯ãã¨ã¯ç°ãªããããã¿ã¤ããªãã¸ã§ã¯ããæã¤ãããinstanceof Array ã誤ã£ã¦ false ãè¿ããã¨ã«ãªãããã§ãã
ã¹ã¿ãã¯ã¨å®è¡ã³ã³ããã¹ã
ã¾ããåæçãªã³ã¼ãã®å®è¡ã«ã¤ãã¦èãã¾ããããããã®ã¸ã§ãã¯ãé¢é£ä»ããããã³ã¼ã«ããã¯ãå¼ã³åºããã¨ã§å®è¡ããã¾ãããã®ã³ã¼ã«ããã¯å ã®ã³ã¼ãã¯ã夿°ã®çæã颿°ã®å¼ã³åºããçµäºãè¡ããã¨ãããã¾ããå颿°ã¯ãèªèº«ã®å¤æ°ç°å¢ã¨ãã©ãã«æ»ãã¹ããã追跡ããå¿ è¦ãããã¾ãããããå¦çããããã«ãã¨ã¼ã¸ã§ã³ãã¯å®è¡ã³ã³ããã¹ãã追跡ããããã®ã¹ã¿ãã¯ãå¿ è¦ã¨ãã¾ããå®è¡ã³ã³ããã¹ãï¼ä¸è¬ã«ã¹ã¿ãã¯ãã¬ã¼ã ã¨ãå¼ã°ãã¾ãï¼ã¯ãå®è¡ã®æå°åä½ã§ããããã§ã¯ä»¥ä¸ã®æ å ±ã追跡ããã¾ãã
- ã³ã¼ãã®è©ä¾¡ç¶æ
- ã¢ã¸ã¥ã¼ã«ã¾ãã¯ã¹ã¯ãªããã颿°ï¼è©²å½ããå ´åï¼ããã®ã³ã¼ããå«ã¾ãã¦ããç¾å¨å®è¡ä¸ã®ã¸ã§ãã¬ã¼ã¿ã¼
- ç¾å¨ã®ã¬ã«ã
- ãã¤ã³ããä¾ãã°æ¬¡ã®ãã®
varãletãconstãfunctionãclassãªã©ã§å®ç¾©ãã夿°#fooã®ããã«ãç¾å¨ã®ã³ã³ããã¹ãå ã§ã®ã¿æå¹ãªãã©ã¤ãã¼ãèå¥åthisåç §
次ã®ã³ã¼ãã§å®ç¾©ãããåä¸ã®ã¸ã§ããããªãããã°ã©ã ãæ³åãã¦ã¿ã¦ãã ããã
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 ã«ä»£å
¥
- ã¸ã§ããå§ã¾ãã¨ãã¾ãæåã®ãã¬ã¼ã ã使ãããããã§å¤æ°
fooãbarãbazãå®ç¾©ããã¾ããããã¦ãbarã«å¼æ°7ãã¤ãã¦å¼ã³åºãã¾ãã barã®å¼ã³åºãã«å¯¾ã㦠2 ã¤ç®ã®ãã¬ã¼ã ã使ããã弿°xã¨ãã¼ã«ã«å¤æ°yã®ãã¤ã³ããä½ããã¾ããã¾ãx * yã®ä¹ç®ãå®è¡ãããã®çµæãç¨ãã¦fooãå¼ã³åºãã¾ããfooã®å¼ã³åºãã«å¯¾ã㦠3 ã¤ç®ã®ãã¬ã¼ã ã使ããã弿°bã¨ãã¼ã«ã«å¤æ°aã®ãã¤ã³ããä½ããã¾ããã¾ãa + b + 11ã®å ç®æ¼ç®ãå®è¡ãããã®çµæãè¿ãã¾ããfooããæ»ãéãã¹ã¿ãã¯ã®ä¸çªä¸ã®ãã¬ã¼ã è¦ç´ ãããããããå¼ã³åºãå¼foo(x * y)ã¯è¿å¤ã¨ãã¦è©ä¾¡ããã¾ãããã®å¾ããã®çµæãè¿ãã ãã®å¦çãå®è¡ããã¾ããbarããæ»ãéãã¹ã¿ãã¯ã®ä¸çªä¸ã®ãã¬ã¼ã è¦ç´ ãããããããå¼ã³åºãå¼bar(7)ã¯è¿å¤ã¨ãã¦è©ä¾¡ããã¾ããããã«ãããbazããã®è¿å¤ã§åæåããã¾ãã- ã¸ã§ãã®ã½ã¼ã¹ã³ã¼ãã®æ«å°¾ã«å°éãããããã¨ã³ããªã¼ãã¤ã³ãã®ã¹ã¿ãã¯ãã¬ã¼ã ãã¹ã¿ãã¯ãããããããã¾ããã¹ã¿ãã¯ã¯ç©ºã«ãªã£ããããã¸ã§ãã¯å®äºããã¨ã¿ãªããã¾ãã
ã¸ã§ãã¬ã¼ã¿ã¼ã¨åå ¥
ãã¬ã¼ã ãããããããã¨ãã¦ããå¿ ãããæ°¸ä¹ ã«æ¶ãã¦ãã¾ãããã§ã¯ããã¾ããããªããªããå¾ã§ãã®ãã¬ã¼ã ã«æ»ãå¿ è¦ãããå ´åãããããã§ããä¾ãã°ãã¸ã§ãã¬ã¼ã¿ã¼é¢æ°ãèãã¦ã¿ã¾ãããã
function* gen() {
console.log(1);
yield;
console.log(2);
}
const g = gen();
g.next(); // logs 1
g.next(); // logs 2
ãã®å ´åãgen() ãå¼ã³åºãã¨ãã¾ãå®è¡ã³ã³ããã¹ãã使ããã¾ãããããã¯ä¸æåæ¢ãããç¶æ
ã«ãªãã¾ããã¤ã¾ããgen å
ã®ã³ã¼ãã¯ã¾ã å®è¡ããã¾ãããã¸ã§ãã¬ã¼ã¿ã¼ g ã¯ããã®å®è¡ã³ã³ããã¹ããå
é¨çã«ä¿åãã¾ããç¾å¨å®è¡ä¸ã®å®è¡ã³ã³ããã¹ãã¯ãå¼ãç¶ãã¨ã³ããªã¼ãã¤ã³ãã¨ãã¦æ®ãã¾ããg.next() ãå¼ã³åºãããã¨ãgen ã®å®è¡ã³ã³ããã¹ããã¹ã¿ãã¯ã«ããã·ã¥ãããgen å
ã®ã³ã¼ãã yield å¼ã¾ã§å®è¡ããã¾ãããã®å¾ãã¸ã§ãã¬ã¼ã¿ã¼ã®å®è¡ã³ã³ããã¹ãã¯ä¸æåæ¢ãããã¹ã¿ãã¯ããé¤å»ããã¾ããããã«ãããå¶å¾¡ã¯ã¨ã³ããªã¼ãã¤ã³ãã«æ»ãã¾ããg.next() ãå度å¼ã³åºãããã¨ãã¸ã§ãã¬ã¼ã¿ã¼ã®å®è¡ã³ã³ããã¹ããã¹ã¿ãã¯ã«åã³ããã·ã¥ãããgen å
ã®ã³ã¼ãã¯ä¸æããç®æããåéããã¾ãã
ãã¼ã«ã³ã¼ã«
仿§æ¸ã§å®ç¾©ããã¦ããã¡ã«ããºã ã®ä¸ã¤ã«ããããã¼ãã¼ã«ã³ã¼ã« (proper tail call, PTC) ãããã¾ãã颿°å¼ã³åºãããã¼ã«ã³ã¼ã«ã§ããã¨ã¯ãå¼ã³åºãå´ãå¼ã³åºãå¾ã«å¤ãè¿ã以å¤ã®å¦çãè¡ããªãå ´åãæãã¾ãã
function f() {
return g();
}
ãã®å ´åãg ã¸ã®å¼ã³åºãã¯ãã¼ã«ã³ã¼ã«ã¨ãªãã¾ãã颿°å¼ã³åºããæ«å°¾ã®ä½ç½®ã«ããå ´åãã¨ã³ã¸ã³ã¯ g() ã®å¼ã³åºãç¨ã«æ°ãããã¬ã¼ã ãã¹ã¿ãã¯ã«ããã·ã¥ããã®ã§ã¯ãªããç¾å¨ã®å®è¡ã³ã³ããã¹ããç ´æ£ããããããã¼ã«ã³ã¼ã«ã®ã³ã³ããã¹ãã«ç½®ãæããå¿
è¦ãããã¾ããã¤ã¾ãããã¼ã«å帰ã¯ã¹ã¿ãã¯ãµã¤ãºã®å¶éãåãã¾ããã
function factorial(n, acc = 1) {
if (n <= 1) return acc;
return factorial(n - 1, n * acc);
}
å®éã«ã¯ãç¾å¨ã®ãã¬ã¼ã ãç ´æ£ããã¨ãããã°ä¸ã®åé¡ãçºçãã¾ãããªããªããg() ãã¨ã©ã¼ãçºçãããå ´åãf ã¯ã¹ã¿ãã¯ã«æ®ãããã¹ã¿ãã¯ãã¬ã¼ã¹ã«ç¾ããªããªãããã§ããç¾å¨ãPTC ãå®è£
ãã¦ããã®ã¯ Safari (JavaScriptCore) ã®ã¿ã§ããããããã°æ§ã®èª²é¡ã解決ããããã«ãããã¤ãã®åºæã®ä»çµã¿ãæ§ç¯ãã¦ãã¾ãã
ã¯ãã¼ã¸ã£
夿°ã®ã¹ã³ã¼ãã¨é¢æ°å¼ã³åºãã«é¢é£ããããä¸ã¤ã®è峿·±ãç¾è±¡ããã¯ãã¼ã¸ã£ã§ãã颿°ãçæããããã³ã«ããã®é¢æ°ã¯å é¨çã«ãç¾å¨å®è¡ä¸ã®å®è¡ã³ã³ããã¹ãã«ããã夿°ã®ãã¤ã³ããè¨æ¶ãã¾ãããã®çµæããããã®å¤æ°ã®ãã¤ã³ãã¯ãå®è¡ã³ã³ããã¹ããçµäºããå¾ãåç¶ãããã¨ãããã¾ãã
let f;
{
let x = 10;
f = () => x;
}
console.log(f()); // logs 10
ã¸ã§ããã¥ã¼ã¨ã¤ãã³ãã«ã¼ã
ã¨ã¼ã¸ã§ã³ãã¯ã¹ã¬ããã§ãããã¤ã¾ãã¤ã³ã¿ã¼ããªã¿ã¯ä¸åº¦ã«1ã¤ã®æããå¦çã§ãã¾ãããã³ã¼ãããã¹ã¦åæçã§ããã°ã常ã«å¦çãé²ãããã¨ãã§ãããããåé¡ã¯ããã¾ãããããããã³ã¼ããéåæå¦çãå®è¡ããå¿ è¦ãããå ´åããã®å¦çãå®äºããªãéããå¦çãé²ãããã¨ã¯ã§ãã¾ãããããããããã«ãã£ã¦ããã°ã©ã å ¨ä½ã忢ãã¦ãã¾ãã¨ã使ãåæã«å½±é¿ãåã¼ãã¦ãã¾ãã¾ããã¦ã§ãã¹ã¯ãªããè¨èªã¨ãã¦ã® JavaScript ã®æ§è³ªä¸ããããã¯ããªããã¨ãæ±ããããã®ã§ãããã®ããããã®éåæå¦çã®å®äºãå¦çããã³ã¼ãã¯ãã³ã¼ã«ããã¯ã¨ãã¦å®ç¾©ããã¾ãããã®ã³ã¼ã«ããã¯ã¯ã¸ã§ããå®ç¾©ããå¦çãå®äºããã¨ããã®ã¸ã§ãã¯ã¸ã§ããã¥ã¼ï¼HTML ã®ç¨èªã§è¨ãã°ã¤ãã³ãã«ã¼ãï¼ã«å ¥ãããã¾ãã
ã¨ã¼ã¸ã§ã³ãã¯æ¯åããã¥ã¼ããã¸ã§ããåãåºãã¦å®è¡ãã¾ããã¸ã§ããå®è¡ãããã¨ãåæã«æ°ããã¸ã§ããçæããããããã¯ãã¥ã¼ã®æ«å°¾ã«è¿½å ããã¾ããã¾ããã¿ã¤ãã¼ãI/Oãã¤ãã³ããªã©ã®éåæãã©ãããã©ã¼ã ã¡ã«ããºã ã®å®äºã«ãã£ã¦ããã¸ã§ãã追å ããããã¨ãããã¾ããã¸ã§ãã¯ãã¹ã¿ãã¯ã空ã«ãªã£ãæç¹ã§å®äºããã¨ã¿ãªããããã®å¾ããã¥ã¼ããæ¬¡ã®ã¸ã§ããåãåºããã¾ããã¸ã§ãã¯ä¸å¾ã®åªå 度ã§åãåºãããã¨ã¯éãã¾ãããä¾ãã°ãHTML ã¤ãã³ãã«ã¼ãã§ã¯ãã¸ã§ããã¿ã¹ã¯ã¨ãã¤ã¯ãã¿ã¹ã¯ã® 2 ã¤ã®ã«ãã´ãªã¼ã«åé¡ãã¾ãããã¤ã¯ãã¿ã¹ã¯ã¯åªå 度é«ãã§ãã¿ã¹ã¯ãã¥ã¼ããã¸ã§ããåãåºãããåã«ãã¾ããã¤ã¯ãã¿ã¹ã¯ãã¥ã¼ãå¦çããã¾ããæ å ±ã«ã¤ãã¦ã¯ãHTML ãã¤ã¯ãã¿ã¹ã¯ã¬ã¤ããåç §ãã¦ãã ãããã¸ã§ããã¥ã¼ã空ã®å ´åãã¨ã¼ã¸ã§ã³ãã¯æ°ããã¸ã§ãã追å ããã®ãå¾ æ©ãã¾ãã
ãå®äºã¾ã§å®è¡ã
ããããã®ã¸ã§ãã¯ãä»ã®ã¸ã§ããå¦çãããåã«å®äºãã¾ããããã«ãããããã°ã©ã ãåæããéã«ããã¤ãã®ããããã£ãããã¾ããä¾ãã°ã颿°ãå®è¡ãããã¨ããã®å®è¡ã¯å²ãè¾¼ã¿ãåãããã¨ããªããä»ã®ã³ã¼ããå®è¡ãããåã«å®å ¨ã«å®äºãã¾ãï¼ã¾ãããã®é¢æ°ãæä½ãããã¼ã¿ã夿´ãããã¨ãå¯è½ã§ãï¼ãããã¯ãä¾ãã° C è¨èªã¨ã¯ç°ãªãã¾ããC è¨èªã§ã¯ã颿°ãã¹ã¬ããå ã§å®è¡ããã¦ããå ´åãã©ã³ã¿ã¤ã ã·ã¹ãã ã«ãã£ã¦ãã¤ã§ã䏿ãããå¥ã®ã¹ã¬ããå ã®ã³ã¼ããå®è¡ããããã¨ãããã¾ãã
ä¾ãã°ã次ã®ãããªä¾ãèãã¦ã¿ã¾ãããã
const promise = Promise.resolve();
let i = 0;
promise.then(() => {
i += 1;
console.log(i);
});
promise.then(() => {
i += 1;
console.log(i);
});
ãã®ä¾ã§ã¯ããã§ã«è§£æ±ºæ¸ã¿ã®ãããã¹ã使ãã¦ãã¾ããã¤ã¾ããããã«æ·»ä»ãããã³ã¼ã«ããã¯ã¯ãã¹ã¦ãç´ã¡ã«ã¸ã§ãã¨ãã¦ã¹ã±ã¸ã¥ã¼ã«ããã¾ãã2 ã¤ã®ã³ã¼ã«ããã¯ã¯ç«¶åç¶æ
ãçºçããã¦ããããã«è¦ãã¾ãããå®éã«ã¯åºåã¯å®å
¨ã«äºæ¸¬å¯è½ã§ããã¤ã¾ãã1 㨠2 ãé çªã«ãã°åºåããã¾ããããã¯ãããããã®ã¸ã§ããå®äºãã¦ããæ¬¡ã®ã¸ã§ããå®è¡ãããããã§ãããããã£ã¦ãå
¨ä½çãªé åºã¯å¸¸ã« i += 1; console.log(i); i += 1; console.log(i); ã¨ãªããæ±ºã㦠i += 1; i += 1; console.log(i); console.log(i); ã¨ã¯ãªãã¾ããã
ãã®ã¢ãã«ã®æ¬ ç¹ã¯ãã¸ã§ãã®å®äºã«æéãããããããã¨ãã¦ã§ãã¢ããªã±ã¼ã·ã§ã³ãã¯ãªãã¯ãã¹ã¯ãã¼ã«ã¨ãã£ãã¦ã¼ã¶ã¼ã®æä½ãå¦çã§ããªããªããã¨ã§ãããã©ã¦ã¶ã¼ã¯ããã¹ã¯ãªããã®å®è¡ã«æéããããããã¾ããã¨ãããã¤ã¢ãã°ã表示ãããã¨ã§ããã®åé¡ãç·©åãã¾ããæ¨å¥¨ããã対çã¨ãã¦ã¯ãã¸ã§ãã®å¦çæéãçããããã¨ãããã¦å¯è½ã§ããã°ã1 ã¤ã®ã¸ã§ããè¤æ°ã®ã¸ã§ãã«åå²ãããã¨ã§ãã
ãããã¯ããªã
ã¤ãã³ãã«ã¼ãã¢ãã«ãæä¾ããããä¸ã¤ã®éè¦ãªä¿è¨¼ã¯ãJavaScript ã®å®è¡ã決ãã¦ãããã¯ãããªãã¨ãããã¨ã§ããI/O ã®å¦çã¯é常ãã¤ãã³ãã¨ã³ã¼ã«ããã¯ãéãã¦è¡ããããããã¢ããªã±ã¼ã·ã§ã³ã IndexedDB ã¯ã¨ãªã¼ã®è¿çã fetch() ãªã¯ã¨ã¹ãã®è¿çãå¾
ã£ã¦ããéã§ããã¦ã¼ã¶ã¼å
¥åãªã©ã®ä»ã®å¦çãç¶ç¶ãããã¨ãå¯è½ã§ããéåæã¢ã¯ã·ã§ã³ã®å®äºå¾ã«å®è¡ãããã³ã¼ãã¯ã常ã«ã³ã¼ã«ããã¯é¢æ°ã¨ãã¦æå®ããã¾ãï¼ä¾ãã°ããããã¹ã® then() ãã³ãã©ã¼ãsetTimeout() ã®ã³ã¼ã«ããã¯é¢æ°ãã¾ãã¯ã¤ãã³ããã³ãã©ã¼ãªã©ï¼ããããã¯ãã¢ã¯ã·ã§ã³ãå®äºããéã«ã¸ã§ããã¥ã¼ã«è¿½å ãããã¿ã¹ã¯ãå®ç¾©ãããã®ã§ãã
ãã¡ãããããããã¯ããªããã¨ããä¿è¨¼ãå®ç¾ããã«ã¯ããã©ãããã©ã¼ã ã® API ãæ¬è³ªçã«éåæã§ããå¿
è¦ãããã¾ãããalert() ãåæåã® XHR ãªã©ãä¸é¨ã®å¤ãä¾å¤ãåå¨ãã¾ããã¢ããªã±ã¼ã·ã§ã³ã®å¿çæ§ã確å®ã«å®ç¾ãããããããããé¿ãããã¨ãæ¨å¥¨ããã¦ãã¾ãã
ã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼ã¨ã¡ã¢ãªã¼å ±æ
è¤æ°ã®ã¨ã¼ã¸ã§ã³ãã¯ã¡ã¢ãªã¼å ±æãéãã¦éä¿¡ããã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼ãå½¢æãããã¨ãã§ãã¾ããã¨ã¼ã¸ã§ã³ãã¯ãã¡ã¢ãªã¼ãå ±æã§ããå ´åã«éããåãã¯ã©ã¹ã¿ã¼å ã«åå¨ãã¾ãã2 ã¤ã®ã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼éã§æ å ±ã交æããããã®çµã¿è¾¼ã¿ã®ä»çµã¿ã¯åå¨ããªãããããããã¯å®å ¨ã«ç¬ç«ããå®è¡ã¢ãã«ã¨è¦ãªããã¾ãã
ã¨ã¼ã¸ã§ã³ãã使ããéï¼ã¯ã¼ã«ã¼ã®çæãªã©ï¼ããããç¾å¨ã®ã¨ã¼ã¸ã§ã³ãã¨åãã¯ã©ã¹ã¿ã¼ã«å±ããããããã¨ãæ°ããã¯ã©ã¹ã¿ã¼ã使ããããã«ã¤ãã¦ã¯ãããã¤ãã®åºæºãããã¾ããä¾ãã°ã以ä¸ã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã®ãã¢ã¯ãããããåãã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼å ã«åå¨ãããããäºãã«ã¡ã¢ãªã¼ãå ±æãããã¨ãå¯è½ã§ãã
Windowãªãã¸ã§ã¯ãã¨ãããã使ããå°ç¨ã¯ã¼ã«ã¼ã- ã¯ã¼ã«ã¼ï¼ä»»æã®åï¼ã¨ãããã使ããå°ç¨ã¯ã¼ã«ã¼ã
Windowãªãã¸ã§ã¯ã A ã¨ãA ã使ããåä¸ãªãªã¸ã³ã®iframeè¦ç´ ã®Windowãªãã¸ã§ã¯ããWindowãªãã¸ã§ã¯ãã¨ããããéããåä¸ãªãªã¸ã³ã®Windowãªãã¸ã§ã¯ããWindowãªãã¸ã§ã¯ãã¨ãããã使ããã¯ã¼ã¯ã¬ããã
以ä¸ã®ã°ãã¼ãã«ãªãã¸ã§ã¯ãã®ãã¢ã¯ãåãã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼å ã«åå¨ããªããããã¡ã¢ãªã¼ãå ±æãããã¨ã¯ã§ãã¾ããã
Windowãªãã¸ã§ã¯ãã¨ãããã使ããå ±æã¯ã¼ã«ã¼ã- ã¯ã¼ã«ã¼ï¼ä»»æã®åï¼ã¨ãããã使ããå ±æã¯ã¼ã«ã¼ã
Windowãªãã¸ã§ã¯ãã¨ãããã使ãããµã¼ãã¹ã¯ã¼ã«ã¼ãWindowãªãã¸ã§ã¯ã A ã¨ãA ã使ããiframeè¦ç´ ã®Windowãªãã¸ã§ã¯ãï¼A ã¨åä¸ãªãªã¸ã³ã®ãã¡ã¤ã³ã§ãã£ã¦ã¯ãªãã¾ããï¼ã- ãªã¼ããã¼ãç¥å
é¢ä¿ãæããªã 2 ã¤ã®
Windowãªãã¸ã§ã¯ããããã¯ã2 ã¤ã®Windowãªãã¸ã§ã¯ããåä¸ãªãªã¸ã³ã§ããå ´åã§ãå½ã¦ã¯ã¾ãã¾ãã
æ£ç¢ºãªã¢ã«ã´ãªãºã ã«ã¤ãã¦ã¯ãHTML 仿§æ¸ã調ã¹ã¦ãã ããã
ã¨ã¼ã¸ã§ã³ãéã®éä¿¡ã¨ã¡ã¢ãªã¼ã¢ãã«
åè¿°ã®éããã¨ã¼ã¸ã§ã³ãã¯ã¡ã¢ãªã¼å
±æãéãã¦éä¿¡ãã¾ããã¦ã§ãä¸ã§ã¯ãã¡ã¢ãªã¼ã¯ postMessage() ã¡ã½ãããä»ãã¦å
±æããã¾ããã¦ã§ãã¯ã¼ã«ã¼ã®ä½¿ç¨æ¹æ³ã¬ã¤ãã§ã¯ããã®æ¦è¦ã説æããã¦ãã¾ããé常ããã¼ã¿ã¯å¤æ¸¡ãã®ã¿ã§ï¼æ§é åè¤è£½ãéãã¦ï¼æ¸¡ãããããã並è¡å¦çã«é¢ããè¤éãªåé¡ã¯çãã¾ãããã¡ã¢ãªã¼ãå
±æããã«ã¯ãSharedArrayBuffer ãªãã¸ã§ã¯ããæç¨¿ããªããã°ãªããªããããã«ãããè¤æ°ã®ã¨ã¼ã¸ã§ã³ããåæã«ã¢ã¯ã»ã¹å¯è½ã«ãªãã2 ã¤ã®ã¨ã¼ã¸ã§ã³ãã SharedArrayBuffer ãéãã¦åãã¡ã¢ãªã¼ã¸ã®ã¢ã¯ã»ã¹ãå
±æããã¨ãAtomics ãªãã¸ã§ã¯ãã使ç¨ãã¦å®è¡ãåæããããã¨ãã§ããã
å ±æã¡ã¢ãªã¼ã«ã¢ã¯ã»ã¹ããã«ã¯ãé常ã®ã¡ã¢ãªã¼ã¢ã¯ã»ã¹ï¼ååæ§ãæã¡ã¾ããï¼ã¨ãååçãªã¡ã¢ãªã¼ã¢ã¯ã»ã¹ã® 2 ã¤ã®æ¹æ³ãããã¾ããå¾è ã¯é次ä¸è²«æ§ï¼ã¤ã¾ããã¯ã©ã¹ã¿ã¼å ã®ãã¹ã¦ã®ã¨ã¼ã¸ã§ã³ããåæããå³å¯ãªã¤ãã³ãã®å ¨é åºãåå¨ãããã¨ãæå³ãã¾ãï¼ãä¿è¨¼ãã¾ãããåè ã¯é åºä»ãããã¦ãã¾ããï¼ã¤ã¾ããé åºãåå¨ããªããã¨ãæå³ãã¾ãï¼ãJavaScript ã§ã¯ããã以å¤ã®é åºä¿è¨¼ãæã¤æä½ã¯æä¾ããã¦ãã¾ããã
ãã®ä»æ§æ¸ã§ã¯ãå ±æã¡ã¢ãªã¼ã¨ä¸ç·ã«ä½æ¥ããããã°ã©ãã¼åãã«ã以ä¸ã®ã¬ã¤ãã©ã¤ã³ãæå®ãã¦ãã¾ãã
ããã°ã©ã ã¯ãã¼ã¿ç«¶åãçºçããªãããã«ãããã¨ãæ¨å¥¨ãã¾ããã¤ã¾ããåãã¡ã¢ãªä½ç½®ã«å¯¾ãã¦éååçãªæä½ã並è¡ãã¦è¡ããããã¨ã絶対ã«ãªããããªæ§é ã«ããå¿ è¦ãããã¾ãããã¼ã¿ç«¶åã®ãªãããã°ã©ã ã¯ãåã¨ã¼ã¸ã§ã³ãã®è©ä¾¡ã»ãã³ãã£ã¯ã¹ã«ãããåã¹ããããäºãã«ã¤ã³ã¿ã¼ãªã¼ãããããããªã¤ã³ã¿ã¼ãªã¼ãã»ãã³ãã£ã¯ã¹ãæã£ã¦ãã¾ãããã¼ã¿ç«¶åã®ãªãããã°ã©ã ã«ã¤ãã¦ã¯ãã¡ã¢ãªã¼ã¢ãã«ã®è©³ç´°ãçè§£ããå¿ è¦ã¯ããã¾ããããã®è©³ç´°ãç¥ã£ãã¨ããã§ãECMAScript ãããè¯ãè¨è¿°ããããã®ç´æãå½¹ç«ã¤ãã¨ã¯é£ããã§ãããã
ããä¸è¬çã«ã¯ããã¨ãããã°ã©ã ã«ãã¼ã¿ç«¶åãåå¨ããã¨ãã¦ãããã¼ã¿ç«¶åã«é¢ä¸ããæä½ã«ååçæä½ãå«ã¾ãã¦ãããããã¤ç«¶åãããã¹ã¦ã®æä½ã®ã¢ã¯ã»ã¹ãµã¤ãºãåä¸ã§ããéããäºæ¸¬å¯è½ãªåä½ãæã¤ãã¨ãã§ããå¯è½æ§ãããã¾ããååçæä½ãç«¶åã«é¢ä¸ããªãããã«ããæãç°¡åãªæ¹æ³ã¯ãååçæä½ã¨éååçæä½ã§ç°ãªãã¡ã¢ãªã»ã«ã使ç¨ããããã«ããç°ãªããµã¤ãºã®ååçã¢ã¯ã»ã¹ãåæã«åãã»ã«ã«ã¢ã¯ã»ã¹ããªãããã«ãããã¨ã§ããå®è³ªçã«è¨ãã°ãããã°ã©ã ã¯å ±æã¡ã¢ãªã¼ãå¯è½ãªéãå³å¯ãªåä»ãã¨ãã¦æ±ãã¹ãã§ããç«¶åããååçã§ãªãã¢ã¯ã»ã¹ã®é åºãã¿ã¤ãã³ã°ã«ä¾åãããã¨ã¯ä¾ç¶ã¨ãã¦ã§ãã¾ããããã¡ã¢ãªã¼ãå³å¯ãªåä»ãã¨ãã¦æ±ããã¨ã§ãç«¶åããã¢ã¯ã»ã¹ã«ããããã£ã¢ãªã³ã°ãï¼å¤ã®ããããæ··å¨ãããã¨ï¼ã¯çºçãã¾ããã
並è¡å¦çã¨åæ¹é²è¡ã®ä¿è¨¼
è¤æ°ã®ã¨ã¼ã¸ã§ã³ãã飿ºããå ´åããããã¯ããªãã¨ããä¿è¨¼ã¯å¸¸ã«æãç«ã¡ã¾ãããããã¨ã¼ã¸ã§ã³ãã¯ãå¥ã®ã¨ã¼ã¸ã§ã³ããä½ããã®ã¢ã¯ã·ã§ã³ãå®è¡ããã®ãå¾ ã£ã¦ããéã«ããããã¯ãã¤ã¾ãä¸æåæ¢ç¶æ ã«ãªããã¨ãããã¾ããããã¯ãåãã¨ã¼ã¸ã§ã³ãå ã§ãããã¹ã®å®äºãå¾ ã¤å ´åã¨ã¯ç°ãªãã¾ãããªããªããã¨ã¼ã¸ã§ã³ãå ¨ä½ã忢ãããã®éãä»ã®ã³ã¼ãã¯ä¸åå®è¡ã§ããªããªãããã§ããè¨ãæããã°ãå¦çãå ã«é²ãããã¨ãã§ããªãã®ã§ãã
ãããããã¯ãé²ããããã©ã®ã¨ã¼ã¸ã§ã³ãããã¤ãããã¯ããããã«ã¤ãã¦ãå³ããå¶éãããã¾ãã
- å°ç¨ã®å®è¡ã¹ã¬ãããæã¤ãããã¯ããã¦ããªãã¨ã¼ã¸ã§ã³ãã¯ãæçµçã«å¦çãåé²ããã¾ãã
- å®è¡ã¹ã¬ãããå ±æããã¨ã¼ã¸ã§ã³ãã®ã°ã«ã¼ãã§ã¯ãããããã®ã¨ã¼ã¸ã§ã³ããæçµçã«å¦çãåé²ããã¾ãã
- ã¨ã¼ã¸ã§ã³ãã¯ããããã¯æ©è½ãæä¾ããæç¤ºçãªAPIãä»ããå ´åãé¤ããä»ã®ã¨ã¼ã¸ã§ã³ãããããã¯ãããã¨ã¯ããã¾ããã
- ãããã¯ãããå¯è½æ§ãããã®ã¯ç¹å®ã®ã¨ã¼ã¸ã§ã³ãã®ã¿ã§ããã¦ã§ãä¸ã§ã¯ãããã«ã¯å°ç¨ã¯ã¼ã«ã¼ãå ±æã¯ã¼ã«ã¼ãå«ã¾ãã¾ãããåä¸ãªãªã¸ã³ã®ã¦ã£ã³ãã¦ããµã¼ãã¹ã¯ã¼ã«ã¼ã¯å«ã¾ãã¾ããã
ã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼ã¯ãå¤é¨ããã®ä¸æåæ¢ãçµäºãçºçããå ´åã§ããã¨ã¼ã¸ã§ã³ãã®ç¨¼åç¶æ³ã«ã¤ãã¦ä¸å®ã®æ´åæ§ãä¿è¨¼ãã¾ãã
- ã¨ã¼ã¸ã§ã³ãã¯ããã®èªèãååãªãã«ä¸æåæ¢ã¾ãã¯åéããããã¨ãããã¾ããä¾ãã°ãã¦ã£ã³ãã¦ããç§»åããã¨ãã³ã¼ãã®å®è¡ã¯ä¸æããã¾ããããã®ç¶æ ã¯ä¿æããã¾ãããã ããããã¨ã¼ã¸ã§ã³ããç¡å¹åãããããã«å¥ã®ã¨ã¼ã¸ã§ã³ãããªã½ã¼ã¹ä¸è¶³ã«é¥ããã¨ãé¿ãããããã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼ãé¨åçã«ç¡å¹åãããã¨ã¯è¨±å¯ããã¦ãã¾ãããä¾ãã°ãå ±æã¯ã¼ã«ã¼ã¯ã使å ã¦ã£ã³ãã¦ãä»ã®å°ç¨ã¯ã¼ã«ã¼ã¨åãã¨ã¼ã¸ã§ã³ãã¯ã©ã¹ã¿ã¼ã«å±ãããã¨ã¯ããã¾ãããããã¯ãå ±æã¯ã¼ã«ã¼ã®åç¶æéãææ¸ã¨ã¯ç¬ç«ãã¦ããããã§ãããããå°ç¨ã¯ã¼ã«ã¼ãããã¯ãä¿æãã¦ããéã«ææ¸ãç¡å¹åãããå ´åãå°ç¨ã¯ã¼ã«ã¼ãåæå¹åãããã¾ã§ï¼ããåæå¹åãããã¨ãã¦ãï¼ãå ±æã¯ã¼ã«ã¼ã¯ããã¯ãåå¾ã§ããªããªãã¾ãããã®éãä»ã®ã¦ã£ã³ãã¦ããå ±æã¯ã¼ã«ã¼ã«ã¢ã¯ã»ã¹ãããã¨ããä»ã®ã¯ã¼ã«ã¼ã¯ããªã½ã¼ã¹ä¸è¶³ã«é¥ã£ã¦ãã¾ãã¾ãã
- åæ§ã«ãã¨ã¼ã¸ã§ã³ãã¯ã¯ã©ã¹ã¿ã¼ã®å¤é¨è¦å ã«ãã£ã¦çµäºãããããå ´åãããã¾ããä¾ãã°ããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ãã¦ã¼ã¶ã¼ããã©ã¦ã¶ã¼ããã»ã¹ãå¼·å¶çµäºããããããã©ã¦ã¶ã¼ããªã½ã¼ã¹ãéå°ã«ä½¿ç¨ãã¦ããã¨ãã¦ã¨ã¼ã¸ã§ã³ããå¼·å¶çµäºããããããå ´åãªã©ã§ãããã®å ´åãã¯ã©ã¹ã¿ã¼å ã®ãã¹ã¦ã®ã¨ã¼ã¸ã§ã³ããçµäºãã¾ããï¼ä»æ§æ¸ã§ã¯ãã¯ã©ã¹ã¿ã¼ã«æ®ã£ã¦ããå°ãªãã¨ã 1 ã¤ã®ãã¼ãããçµäºå¦çããã³çµäºãããã¨ã¼ã¸ã§ã³ããç¹å®ã§ãã API ã¨ããã第 2 ã®æ¦ç¥ãèªãããã¦ãã¾ãããããã¯ã¦ã§ãä¸ã§ã¯å®è£ ããã¦ãã¾ãããï¼
仿§æ¸
| 仿§æ¸ |
|---|
| ECMAScript® 2027 Language Specification > |
| ECMAScript® 2027 Language Specification > |
| HTML > |
é¢é£æ å ±
- Event loops - HTML standard
- What is the Event Loop? - Node.js ããã¥ã¡ã³ã