å 容
- ã¯ããã«
- å€ãã¿ã€ããããã³æŒç®å
- ããã°ã©ã æ§æ
- æ©èœ
- ããŒã¿æ§é ïŒãªããžã§ã¯ããšé å
- é«éé¢æ°
- ãªããžã§ã¯ãã®ç§å¯ã®ç掻
- ãããžã§ã¯ãïŒé»åç掻
- æ€çŽ¢ãšãšã©ãŒåŠç
- æ£èŠè¡šçŸ
- ã¢ãžã¥ãŒã«
- ãããžã§ã¯ãïŒããã°ã©ãã³ã°èšèª
- JavaScriptãšãã©ãŠã¶ãŒ
- ããã¥ã¡ã³ããªããžã§ã¯ãã¢ãã«
- ã€ãã³ãåŠç
- ãããžã§ã¯ãïŒãã©ãããã©ãŒã ã²ãŒã
- ãã£ã³ãã¹ã«æã
- HTTP
- ãã©ãŒã ãšãã©ãŒã ãã£ãŒã«ã
- ãããžã§ã¯ãïŒãã€ã³ã
- Node.js
- ãããžã§ã¯ãïŒçµéšå ±æãŠã§ããµã€ã
- ã³ãŒãã®ãµã³ãããã¯ã¹
ãããã°ã¯ãæåã¯ã³ãŒããèšè¿°ããããã2åå°é£ã§ãã ãããã£ãŠãå¯èœãªéãåçŽãªã³ãŒããèšè¿°ããå Žåãå®çŸ©äžããããã°ããããšã¯ã§ããŸããã
ãã©ã€ã¢ã³ã»ã«ãŒããã³ãšP.J.ãã©ã¯ãŒãããã°ã©ãã³ã°ã¹ã¿ã€ã«ã®åºç€
Ewan-Maã¯ãå€ãã®ã°ããŒãã«å€æ°ãšã²ã©ãããã¯ã䜿çšããŠå°ããªããã°ã©ã ãäœæããŸããã ããã°ã©ã ãèªãã§ããçåŸã¯åœŒã«å°ããŸããã ã䞻人ã¯çããïŒã家ãçããŠããªãå Žåãæ£æ°ŽããŒã¹ãè¿œããããå¿ èŠã¯ãããŸãããã
ãã¹ã¿ãŒãŠã³ãããããã°ã©ãã³ã°ããã¯ãã
ããã°ã©ã ã¯çµæ¶åããæèã§ãã æã ãèããæ··ä¹±ããŸãã æèãããã°ã©ã ã«ã³ãŒãã«å€æãããšããšã©ãŒãæèã«å€ããããšããããŸãã ã©ã¡ãã®å Žåããç Žæããããã°ã©ã ãååŸãããŸãã
ããã°ã©ã ã®æ¬ ç¹ã¯éåžžããã°ãšåŒã°ããŸãã ãããã¯ãããã°ã©ããŒã®ãšã©ãŒãŸãã¯ããã°ã©ã ã察話ããã·ã¹ãã ã®åé¡ã§ããå¯èœæ§ããããŸãã æãããªãšã©ãŒãããã°ã埮åŠãªãšã©ãŒããããã·ã¹ãã å ã«äœå¹Žãé ããããšããããŸãã
å€ãã®å Žåãåé¡ã¯ããã°ã©ããŒãäºèŠããªãã£ããããªç¶æ³ã§çºçããŸãã ãããã®ç¶æ³ã¯é¿ããããªãå ŽåããããŸãã ãŠãŒã¶ãŒã幎霢ãå ¥åããããã«æ±ããããããªã¬ã³ãžããå ¥åãããšãããã°ã©ã ã¯å°é£ãªç¶æ³ã«çœ®ãããŸãã ãããã®ç¶æ³ãäºæž¬ããäœããã®æ¹æ³ã§åŠçããå¿ èŠããããŸãã
ããã°ã©ããŒã®ãšã©ãŒ
ããã°ã©ããŒã®ãšã©ãŒã®å Žåãç®æšã¯æ確ã§ãã ããããèŠã€ããŠä¿®æ£ããå¿ èŠããããŸãã ãã®ãããªãšã©ãŒã®ç¯å²ã¯ãããã°ã©ã ã衚瀺ããããšããã«ã³ã³ãã¥ãŒã¿ãŒãæå¥ãèšãåçŽãªã¿ã€ããã¹ãããç¹æ®ãªã±ãŒã¹ã§èª€ã£ãçµæã«ã€ãªããããã°ã©ã ã®åäœã®ç解ã«ãããé ãããšã©ãŒã«ãŸã§åã³ãŸãã åŸè ã®çš®é¡ã®ãšã©ãŒã¯ãæ°é±éã«ããã£ãŠæ¢ãããšãã§ããŸãã
ç°ãªãèšèªã¯ãããŸããŸãªæ¹æ³ã§ãšã©ãŒãèŠã€ããã®ã«åœ¹ç«ã¡ãŸãã æ®å¿µãªãããJavaScriptã¯ãã®ã¹ã±ãŒã«ã®çµããã«ããããã»ãšãã©å©ãã«ãªããªãããšããã©ãã«ãä»ããããŠããŸãã äžéšã®èšèªã§ã¯ãããã°ã©ã ãéå§ããåã«ãã¹ãŠã®å€æ°ãšåŒã®åãæ£ç¢ºã«ç¥ãå¿ èŠããããåãæ£ãã䜿çšãããŠããªãå Žåã¯ããã«éç¥ãããŸãã JavaScriptã¯å®è¡æã«åã®ã¿ãèæ ®ããŸãããããã§ã次ã®ãããªèŠæ ããªããã°ããŸãæå³ã®ãªãããšãå®è¡ã§ããŸãã
x = true * ""
JavaScriptã¯ãŸã ããã€ãã®ããšã«ã€ããŠäžå¹³ãèšã£ãŠããŸãã æ§æçã«æ£ãããªãããã°ã©ã ãäœæãããšãããã«ãšã©ãŒãçºçããŸãã é¢æ°ã§ã¯ãªãäœãã®åŒã³åºããæªå®çŸ©å€æ°ã®ããããã£ãžã®ã¢ã¯ã»ã¹ãªã©ããã®ä»ã®ãšã©ãŒã¯ãããã°ã©ã ã®å®è¡äžã«ãã®ãããªæå³ã®ãªãç¶æ³ã«ééãããšçºçããŸãã
ããããå€ãã®å Žåãããªãã®ç¡æå³ãªèšç®ã¯åçŽã«NaNïŒæ°ã§ã¯ãªãïŒãŸãã¯æªå®çŸ©ãçæããŸãã ããã°ã©ã ã¯ãäœãæå³ã®ããããšãå®è¡ããŠããããšã確èªããŠã楜ããç¶ããŸãã ãã®ãããªæ¶ç©ºã®å€ããã§ã«ããã€ãã®é¢æ°ãééããŠããå Žåããšã©ãŒã¯åŸã§çŸããŸãã ãšã©ãŒã¡ãã»ãŒãžã¯ãŸã£ããçºçããªãå ŽåããããŸãããå®è¡çµæãæ£ãããªãå ŽåããããŸãã ãã®ãããªåé¡ã®åå ãèŠã€ããããšã¯é£ããäœæ¥ã§ãã
ããã°ã©ã å ã®ãã°ãèŠã€ããããã»ã¹ã¯ããããã°ãšåŒã°ããŸãã
å³æ Œã¢ãŒã
JavaScriptãå³å¯ã¢ãŒãã«ãããšãJavaScriptãããå³å¯ã«ã§ããŸãã ãã®ããã«ããuse strictãããã¡ã€ã«ã®å é ãŸãã¯é¢æ°ã®æ¬äœã«æžã蟌ãŸããŸãã äŸïŒ
function canYouSpotTheProblem() { "use strict"; for (counter = 0; counter < 10; counter++) console.log(" "); } canYouSpotTheProblem(); // â ReferenceError: counter is not defined
éåžžãã«ãŠã³ã¿ã®åã®äŸã®ããã«ãå€æ°ã®åã«varãèšè¿°ããã®ãå¿ãããšãJavaScriptã¯éãã«ã°ããŒãã«å€æ°ãäœæããŠäœ¿çšããŸãã å³æ Œã¢ãŒãã§ã¯ããšã©ãŒãã¹ããŒãããŸãã ãšãŠã䟿å©ã§ãã ãã ããã°ããŒãã«å€æ°ãæ¢ã«ååšããå Žåã¯ãšã©ãŒã¯çºçããŸãã-å²ãåœãŠãæ°ããå€æ°ãäœæããå Žåã®ã¿ã§ãã
å¥ã®å€æŽ-ãã®ãã€ã³ãã£ã³ã°ã«ã¯ãã¡ãœãããšããŠã§ã¯ãªãåŒã³åºãããé¢æ°ã«æªå®çŸ©ãå«ãŸããŠããŸãã éå³å¯ã¢ãŒãã§é¢æ°ãåŒã³åºããšããããã¯ã°ããŒãã«ã¹ã³ãŒããªããžã§ã¯ããæããŸãã ãããã£ãŠã誀ã£ãŠã¹ããªã¯ãã¢ãŒãã§ã¡ãœããã誀ã£ãŠåŒã³åºããå ŽåãJavaScriptããäœããèªã¿åãããšãããšãšã©ãŒãã¹ããŒãããã°ããŒãã«ãªããžã§ã¯ãã§ããŸãåäœããŸããã
ããšãã°ãæ°ããããŒã¯ãŒããªãã§ã³ã³ã¹ãã©ã¯ã¿ãŒãåŒã³åºãã³ãŒããèããŸãããã®å Žåãäœæããããªããžã§ã¯ããåç §ããŸããã
function Person(name) { this.name = name; } var ferdinand = Person(""); // - console.log(name); // â
ç¡å¹ãªPersonåŒã³åºãã¯æåããŸãããæªå®çŸ©ãšããŠæ»ããã°ããŒãã«å€æ°åãäœæããŸãã å³æ Œã¢ãŒãã§ã¯ããã¹ãŠãç°ãªããŸãã
"use strict"; function Person(name) { this.name = name; } // , 'new' var ferdinand = Person(" "); // â TypeError: Cannot set property 'name' of undefined
ãšã©ãŒã«ã€ããŠããã«éç¥ãããŸãã ãšãŠãå¿«é©ã§ãã
å³å¯ã¢ãŒãã§ã¯ãä»ã®ããšãã§ããŸãã åãååã®è€æ°ã®ãã©ã¡ãŒã¿ãŒã䜿çšããŠé¢æ°ãåŒã³åºãããšãçŠæ¢ããèšèªã®æœåšçã«åé¡ã®ããããããã£ãããã€ãåé€ããŸãïŒããšãã°ãwithã¹ããŒãã¡ã³ãã¯ãæ¬æžã§ã¯èª¬æããŠããŸããã
èŠããã«ãããã°ã©ã ããã¹ãã®åã«å³å¯ãªã©ãã«ã䜿çšãããšãåé¡ãçºçããããšã¯ã»ãšãã©ãããŸããããåé¡ã確èªããã®ã«åœ¹ç«ã¡ãŸãã
ãã¹ãäž
èšèªããšã©ãŒã®çºèŠã«åœ¹ç«ããªãå Žåãããã°ã©ã ãèµ·åãããããæ¬æ¥ã®æ¹æ³ã§äœããè¡ããã©ããã芳å¯ããããšã«ããããšã©ãŒãå°é£ãªæ¹æ³ã§æ¢ãå¿ èŠããããŸãã
äœåºŠãäœåºŠãæåã§è¡ãããšã¯ã確å®ã«å€¢äžã«ãªãæ¹æ³ã§ãã 幞ããªããšã«ãå€ãã®å Žåãã¡ã€ã³ããã°ã©ã ã®æ€èšŒãèªååããå¥ã®ããã°ã©ã ãäœæã§ããŸãã
äŸãšããŠãåã³ãã¯ã¿ãŒã¿ã€ãã䜿çšããŸãã
function Vector(x, y) { this.x = x; this.y = y; } Vector.prototype.plus = function(other) { return new Vector(this.x + other.x, this.y + other.y); };
ãã¯ã¿ãŒã®å®è£ ãæ£åžžã«æ©èœããããšã確èªããããã°ã©ã ãäœæããŸãã 次ã«ãå®è£ ãå€æŽãããã³ã«ããã¹ãããã°ã©ã ãå®è¡ããŠãåé¡ãçºçããªãããšã確èªããŸãã ãã¯ã¿ãŒã¿ã€ãã«æ©èœïŒããšãã°ãæ°ããã¡ãœããïŒãè¿œå ãããšããã®æ°ããæ©èœã®ãã§ãã¯ãè¿œå ãããŸãã
function testVector() { var p1 = new Vector(10, 20); var p2 = new Vector(-10, 5); var p3 = p1.plus(p2); if (p1.x !== 10) return ": x property"; if (p1.y !== 20) return " : y property"; if (p2.x !== -10) return " : negative x property"; if (p3.x !== 0) return " : x from plus"; if (p3.y !== 25) return " : y from plus"; return " "; } console.log(testVector()); // â
ãã®ãããªãã§ãã¯ãèšè¿°ãããšãã³ãŒããéè€ããŸãã 幞ããªããšã«ãå°åæãæžãããã«ç¹å¥ã«èª¿æŽãããç¹å¥ãªèšèªã䜿çšããŠãã¹ãã¹ã€ãŒããæžãã®ãå©ãããœãããŠã§ã¢è£œåããããŸãã ãããã¯ãã¹ããã¬ãŒã ã¯ãŒã¯ãšåŒã°ããŸãã
ãããã°
ããã°ã©ã ã®åé¡ã«æ°ã¥ããã-ããã¯æ£ããåäœããããšã©ãŒãçºè¡ããŸã-ããã¯åé¡ãäœã§ããããèŠã€ããæã§ãã
æã ããã¯æããã§ãã ãšã©ãŒã¡ãã»ãŒãžã¯ããã°ã©ã ã®ç¹å®ã®è¡ã«ã€ãªãããŸãããšã©ãŒã®èª¬æãšãã®è¡ãèªããšãåé¡ãèŠã€ããããšãã§ããŸãã
ããããåžžã«ã§ã¯ãããŸããã ãšã©ãŒã«ã€ãªããè¡ã¯ãä»ã®å Žæã§åãåã£ãäžæ£ãªå€ã誀ã£ãŠäœ¿çšãããæåã®å Žæã§ããããšãå€æããå ŽåããããŸãã ãšã©ãŒã¡ãã»ãŒãžããŸã£ãã衚瀺ãããªãå ŽåããããŸã-åã«èª€ã£ãçµæã衚瀺ãããã ãã§ãã åã®ç« ã®æŒç¿ãè¡ã£ãå Žåããã®ãããªç¶æ³ã«ããããšã¯ééããªãã§ãããã
次ã®äŸã§ã¯ãæå®ãããçªå·ã·ã¹ãã ã®çªå·ãæååã«å€æããæåŸã®æ¡ãååŸããŠé€ç®ãè¡ãããã®çªå·ãåãé€ããŸãã ããããããã°ã©ã ã«ãšã©ãŒãååšããããšã瀺åããŠãããããããã°ã©ã ã«ãã£ãŠçæãããã¯ã€ã«ããªçµæã§ãã
function numberToString(n, base) { var result = "", sign = ""; if (n < 0) { sign = "-"; n = -n; } do { result = String(n % base) + result; n /= base; } while (n > 0); return sign + result; } console.log(numberToString(13, 10)); // â 1.5e-3231.3e-3221.3e-3211.3e-3201.3e-3191.3e-3181.3âŠ
åé¡ãèŠã€ãããšããŠãããŸã èŠã€ããŠããªããµããããŸãã ããã°ã©ã ãã¯ã©ãã·ã¥ããããšã¯ããã£ãŠããã®ã§ããã®çç±ã調ã¹ãå¿ èŠããããŸãã
ããã§ã¯ãã³ãŒãã«ã©ã³ãã ãªå€æŽãå ãããšããè¡åãå æããå¿ èŠããããŸãã 代ããã«èããŠãã ããã çµæãåæãããããèµ·ããçè«ãèãåºããŸãã çè«ããã¹ãããããã«è¿œå ã®èŠ³å¯ãè¡ããŸãâçè«ããªãå Žåã¯ãçè«ãçºæããã®ã«åœ¹ç«ã€èŠ³å¯ãè¡ããŸãã
è€æ°ã®console.logåŒã³åºããæŠç¥çãªå Žæã«é 眮ããããšã¯ãããã°ã©ã ã®æ©èœã«é¢ãã詳现æ å ±ãååŸããããã®è¯ãæ¹æ³ã§ãã ãã®å Žåã13ã1ã0ã®å€ãåãããã«nãå¿ èŠã§ããã«ãŒãã®å é ã«å€ãåºåããŸãããã
13 1.3 0.13 0.013 ⊠1.5e-323
ããã 13ã10ã§é€ç®ããŠãæŽæ°ã¯çæãããŸããã n / = baseã®ä»£ããã«ãn = Math.floorïŒn / baseïŒãå¿ èŠã§ãããã®å Žåãæ°å€ã¯å³ã«æ£ãããã·ããããããŸãã
console.logã«å ããŠããã©ãŠã¶ãŒã§ãããã¬ãŒã䜿çšã§ããŸãã ææ°ã®ãã©ãŠã¶ã§ã¯ãéžæããã³ãŒãè¡ã«ãã¬ãŒã¯ãã€ã³ããé 眮ã§ããŸãã ããã«ãããéžæããè¡ã«å°éãããã³ã«ããã°ã©ã ãäžæåæ¢ããå€æ°ã®å 容ã衚瀺ã§ããŸãã ããã»ã¹ã¯ãã©ãŠã¶ããšã«ç°ãªãããã«æ§æãããŠãããããããã»ã¹ã®è©³çŽ°ã«ã€ããŠã¯èª¬æããŸããããã©ãŠã¶ã®ãéçºè ããŒã«ããéçºè ããŒã«ãæ¢ããŠãã ããã ãã¬ãŒã¯ãã€ã³ããèšå®ãããã1ã€ã®æ¹æ³ã¯ããããã¬ãŒããŒã¯ãŒãã§æ§æãããã³ãŒãã«ãããã¬ãŒåœä»€ãå«ããããšã§ãã éçºè ããŒã«ãã¢ã¯ãã£ããªå Žåãããã°ã©ã ã¯ãã®æ瀺ã§äžæåæ¢ãããããã°ã©ã ã®ã¹ããŒã¿ã¹ã調ã¹ãããšãã§ããŸãã
ãšã©ãŒäŒæ
æ®å¿µãªãããããã°ã©ãã¯ãã¹ãŠã®åé¡ã®çºçãé²ãããšãã§ããŸããã ããã°ã©ã ãå€éšãšéä¿¡ããå Žåã誀ã£ãå ¥åããŒã¿ãåä¿¡ãããã察話ããããšããŠããã·ã¹ãã ãå£ããŠããããã¢ã¯ã»ã¹ã§ããªãå¯èœæ§ããããŸãã
åçŽãªããã°ã©ã ããŸãã¯ããªãã®ç£ç£ã®äžã§åäœããããã°ã©ã ã¯ããã®ãããªç¬éã«åã«ãããããããããšãã§ããŸãã åé¡ã調æ»ããŠãåè©Šè¡ã§ããŸãã ãå®éã®ãã¢ããªã±ãŒã·ã§ã³ã¯ãåã«ãã¯ã©ãã·ã¥ãããã¹ãã§ã¯ãããŸããã æã«ã¯ã誀ã£ãå ¥åããŒã¿ãåãå ¥ããŠãäœããã®æ¹æ³ã§ããããæäœããå¿ èŠããããŸãã ãã以å€ã®å Žåã¯ãäœããããŸããããªãã£ãããšããŠãŒã¶ãŒã«äŒããå¿ èŠããããŸã-ãããŠããããããŸãã ãããã«ãããããã°ã©ã ã¯åé¡ã«å¯Ÿå¿ããŠäœããããªããã°ãªããŸããã
æŽæ°ãèŠæ±ããŠãããè¿ãpromptIntegeré¢æ°ããããšããŸãã ãŠãŒã¶ãŒãããªã¬ã³ãžããšå ¥åããå Žåã圌女ã¯ã©ãããã°ããã§ããïŒ
1ã€ã®ãªãã·ã§ã³ã¯ãç¹å¥ãªæå³ãè¿ãããšã§ãã éåžžããããã®ç®çã«ã¯nullããã³undefinedã䜿çšãããŸãã
function promptNumber(question) { var result = Number(prompt(question, "")); if (isNaN(result)) return null; else return result; } console.log(promptNumber(" ?"));
ããã¯ä¿¡é Œã§ããæŠç¥ã§ãã ããã§ãpromptNumberãåŒã³åºãã³ãŒãã¯ãçªå·ãè¿ããããã©ããã確èªããå¿ èŠããããŸããè¿ãããªãã£ãå Žåã¯ãã©ãã«ãããŠç¶æ³ããæãåºããŸããããäžåºŠå°ããããããã©ã«ãå€ãèšå®ããŸãã ãŸãã¯ãåŒã³åºãã人ã«ç¹å¥ãªæå³ãè¿ãã倱æãå ±åããŸãã
ãã®ãããªå€ãã®å Žåããšã©ãŒãé »ç¹ã«çºçããé¢æ°åŒã³åºãã³ãŒããããããèæ ®ããå¿ èŠãããå Žåããšã©ãŒã®ã€ã³ãžã±ãŒã¿ãšããŠç¹å¥ãªå€ãè¿ãããšã¯å®å šã«åãå ¥ããããŸãã ããããæ¬ ç¹ããããŸãã ãŸããé¢æ°ããšã«ããã©ããªã¿ã€ãã®å€ãè¿ãããšãã§ãããã©ãã§ããããïŒ åœŒå¥³ã容èªã§ããçµæãšã¯ç°ãªãç¹å¥ãªå€ãèŠã€ããããšã¯å°é£ã§ãã
2çªç®ã®åé¡-ç¹å¥ãªå€ã䜿çšãããšãã³ãŒããæ£ãããããšããããŸãã promptNumberé¢æ°ã10ååŒã³åºãããå Žåã10åãã§ãã¯ããŠãnullãè¿ãããã©ããã確èªããå¿ èŠããããŸãã nullã«å¯Ÿããåå¿ããnullãããé«ãã¬ãã«ã«è¿ãããšã§ããå Žåããã®ã³ãŒããåŒã³åºãããå Žæã§ã¯ãnullãã§ãã¯ãåã蟌ãå¿ èŠããããŸãã
äŸå€
é¢æ°ãæ£åžžã«åäœããªãå Žåãåäœãåæ¢ãããã®ãããªãšã©ãŒãåŠçã§ããå Žæã«ãžã£ã³ãããŸãã ããã¯äŸå€åŠçã«ãã£ãŠåŠçãããŸãã
å®è¡æã«åé¡ãçºçããã³ãŒãã¯ãç¹å®ã®å€ã§ããäŸå€ïŒäŸå€ã®çºçãäŸå€ã®ã¹ããŒïŒãçºçïŒãŸãã¯ã¹ããŒïŒã§ããŸãã äŸå€ã®æ»ãå€ã¯ãé¢æ°ããã®ç¹å®ã®ããã³ãããããæ»ãå€ã«äŒŒãŠããŸããé¢æ°èªäœããã ãã§ãªãããããåŒã³åºãããã¹ãŠã®é¢æ°ãããå®è¡ãéå§ãããå Žæã«ãžã£ã³ãããŸãã ããã¯ãã¹ã¿ãã¯ã®å·»ãæ»ããšåŒã°ããŸãã 第3ç« ã®é¢æ°ã¹ã¿ãã¯ãèŠããŠãããããããŸãã...äŸå€ã¯ãã¹ã¿ãã¯ããã°ããã¹ã¯ããŒã«ããŠã³ããçºçãããã¹ãŠã®åŒã³åºãã³ã³ããã¹ããç Žæ£ããŸãã
äŸå€ãã¹ã¿ãã¯ã®æäžéšã«ããã«å°éããå Žåããããã®å©ç¹ã¯ã»ãšãã©ãããŸããã ããã°ã©ã ãçç Žããèå³æ·±ãæ¹æ³ãæäŸããã ãã§ãã 圌ãã®åŒ·ã¿ã¯ãã¹ã¿ãã¯ã®éäžã§ãã¹ã¿ãã¯ã«æ²¿ã£ãŠã¬ãŒã¹ããäŸå€ããã£ãããããé害ç©ãã眮ãããšãã§ããããšã§ãã ãããŠãããã§äœãæçšãªããšãã§ããŸãããã®åŸãããã°ã©ã ã¯äŸå€ããã£ããããããã€ã³ãããå®è¡ãç¶ããŸãã
äŸïŒ
function promptDirection(question) { var result = prompt(question, ""); if (result.toLowerCase() == "left") return "L"; if (result.toLowerCase() == "right") return "R"; throw new Error(" : " + result); } function look() { if (promptDirection("?") == "L") return ""; else return " "; } try { console.log(" ", look()); } catch (error) { console.log("- : " + error); }
throwããŒã¯ãŒãã¯ãäŸå€ãã¹ããŒããããã«äœ¿çšãããŸãã catchã¯ãtryãããã¯ã«ã©ãããããã³ãŒãã§ããã®åŸã«catchãç¶ããŸãã tryãããã¯å ã®ã³ãŒããäŸå€ãã¹ããŒãããšãcatchãããã¯ãå®è¡ãããŸãã æ¬åŒ§ã§ç€ºãããå€æ°ã¯ãäŸå€ã®å€ã«ãã€ã³ããããŸãã catchãããã¯ã®å®è¡ãå®äºããåŸããŸãã¯tryãããã¯ãåé¡ãªãå®è¡ãããå Žåãå®è¡ã¯try / catchã¹ããŒãã¡ã³ãã®åŸã«ããã³ãŒãã«é²ã¿ãŸãã
ãã®å ŽåãErrorã³ã³ã¹ãã©ã¯ã¿ãŒã䜿çšããŠäŸå€ãäœæããŸããã ããã¯ãã¡ãã»ãŒãžããããã£ãæã€ãªããžã§ã¯ããäœæããæšæºã³ã³ã¹ãã©ã¯ã¿ã§ãã ææ°ã®JavaScriptç°å¢ã§ã¯ããã®ã³ã³ã¹ãã©ã¯ã¿ãŒã®ã€ã³ã¹ã¿ã³ã¹ã¯ãäŸå€ãã¹ããŒããããšãã«èç©ãããåŒã³åºãã¹ã¿ãã¯ã«é¢ããæ å ±ãããããã¹ã¿ãã¯ãã¬ãŒã¹ãåéããŸãã ãã®æ å ±ã¯ã¹ã¿ãã¯ããããã£ã«æ ŒçŽãããåé¡ã®è§£æã«åœ¹ç«ã¡ãŸããåé¡ãçºçããé¢æ°ãšããã®åŒã³åºãã«ã€ãªãã£ãä»ã®é¢æ°ãå ±åããŸãã
looké¢æ°ã¯ãpromptDirectionã®åé¡ã®å¯èœæ§ãå®å šã«ç¡èŠããããšã«æ³šæããŠãã ããã ããã¯äŸå€ã®å©ç¹ã§ãããšã©ãŒåŠçã³ãŒãã¯ããšã©ãŒãçºçããåŠçãããå Žæã§ã®ã¿å¿ èŠã§ãã äžéé¢æ°ã¯åã«ããã«æ³šæãæã£ãŠããŸããã
ãŸããã»ãšãã©ã
äŸå€ã§ã¯ãªãŒã³ã¢ãã
次ã®ç¶æ³ãæ³åããŠãã ãããwithContexté¢æ°ã¯ãå®è¡äžã«æäžäœã®å€æ°ã³ã³ããã¹ããç¹å¥ãªã³ã³ããã¹ãå€ãåãåãããšã確èªããããšèããŠããŸãã å®äºåŸãå€ãå€ã埩å ããŸãã
var context = null;
function withContext(newContext, body) { var oldContext = context; context = newContext; var result = body(); context = oldContext; return result; }
bodyé¢æ°ãäŸå€ãã¹ããŒããå Žåã¯ã©ããªããŸããïŒ ãã®å ŽåãwithContextã®åŒã³åºãã¯ã¹ã¿ãã¯ããã®äŸå€ã«ãã£ãŠã¹ããŒãããã³ã³ããã¹ãå€æ°ã¯å ã®å€ãè¿ããŸããã
ãã ããtryã¹ããŒãã¡ã³ãã«ã¯å¥ã®æ©èœããããŸãã catchã®ä»£ããã«ããŸãã¯catchãšäžç·ã«ãfinallyãããã¯ãç¶ããããšãã§ããŸãã finallyãããã¯ã¯ããtryãããã¯ãå®è¡ãããåŸã§ãã³ãŒããå®è¡ãããããšãæå³ããŸãã é¢æ°ãã¯ãªãŒã³ã¢ããããå¿ èŠãããå Žåã¯ãã¯ãªãŒã³ã¢ããã³ãŒããfinallyãããã¯ã«å«ããå¿ èŠããããŸãã
function withContext(newContext, body) { var oldContext = context; context = newContext; try { return body(); } finally { context = oldContext; } }
bodyã®åŒã³åºãçµæãè¿ãããã«å¥ã®å€æ°ã«æ ŒçŽããå¿ èŠããªããªã£ãããšã«æ³šæããŠãã ããã tryãããã¯ããæ»ã£ãŠããfinallyãããã¯ã¯å®è¡ãããŸãã ããã§å®å šã«ãããè¡ãããšãã§ããŸãïŒ
try { withContext(5, function() { if (context < 10) throw new Error(" !"); }); } catch (e) { console.log(": " + e); } // â : Error: ! console.log(context); // â null
withContextããåŒã³åºãããé¢æ°ããå£ããããšããäºå®ã«ãããããããwithContextèªäœã¯ã³ã³ããã¹ãå€æ°ã®å€ãã¯ãªã¢ããŸãã
éžæçäŸå€ãã£ãã
äŸå€ãã¹ã¿ãã¯ã®æäžéšã«å°éãã誰ããã£ããããŠããªãå Žåãç°å¢ã¯ãããåŠçããŸãã æ£ç¢ºã«-ç¹å®ã®ç°å¢ã«äŸåããŸãã ãã©ãŠã¶ãŒã§ã¯ããšã©ãŒã®èª¬æãã³ã³ãœãŒã«ã«è¡šç€ºãããŸãïŒéåžžã¯[ããŒã«]ãŸãã¯[éçº]ã¡ãã¥ãŒã§å©çšã§ããŸãïŒã
ããã°ã©ã ãååãšããŠåŠçã§ããªããšã©ãŒãŸãã¯åé¡ã«ã€ããŠè©±ããŠããå Žåã¯ããã®ãããªãšã©ãŒãåã«ã¹ãããããŠãããŸããŸããã æªåŠçã®äŸå€ã¯ãããã°ã©ã ã®åé¡ãå ±åããããã®åççãªæ¹æ³ã§ããææ°ã®ãã©ãŠã¶ãŒã®ã³ã³ãœãŒã«ã¯ãåé¡ãçºçããæç¹ã§ã¹ã¿ãã¯ã«ãã£ãé¢æ°åŒã³åºãã«é¢ããå¿ èŠãªæ å ±ãæäŸããŸãã
åé¡ã®çºçãäºæž¬å¯èœãªå Žåãããã°ã©ã ã¯æªåŠçã®äŸå€ã§ã¯ã©ãã·ã¥ããããšã¯ãããŸãã-ããã¯éåžžã«ãŠãŒã¶ãŒãã¬ã³ããªãŒã§ã¯ãããŸããã
蚱容ãããªãèšèªã®äœ¿çšâååšããªãå€æ°ãžã®åç §ãnullã«çããå€æ°ã®ããããã£ã®ã¯ãšãªããŸãã¯é¢æ°ã§ã¯ãªãäœãã®åŒã³åºããäŸå€ãã¹ããŒããŸãã ãã®ãããªäŸå€ã¯ãç¬èªã®äŸå€ãšåãæ¹æ³ã§ãã£ããã§ããŸãã
catchãããã¯ã«å ¥ããšãtryãããã¯å ã®äœããäŸå€ãåŒãèµ·ãããããšããããã ãã§ãã äœãæ£ç¢ºã«ãã©ã®ãããªäŸå€ãçºçããã®ãã¯ããããŸããã
JavaScriptïŒé²éªšãªçç¥ïŒã¯ãäŸå€ãéžæçã«ãã£ããããããã®çŽæ¥çãªãµããŒããæäŸããŸããïŒãã¹ãŠããã£ãããããããŸã£ãããã£ããããŸããã ãã®ããã人ã ã¯ãã°ãã°ãçºçããäŸå€ãcatchãããã¯ããŸãã«æžããããã®ã§ãããšä»®å®ããŸãã
ããããç°ãªãå ŽåããããŸãã éåã¯å¥ã®å Žæã§çºçãããããšã©ãŒãããã°ã©ã ã«äŸµå ¥ããŸããã æå¹ãªåçãåŸããããŸã§promptDirectionãåŒã³åºãããšããäŸã次ã«ç€ºããŸãã
for (;;) { try { var dir = promtDirection("?"); // â ! console.log(" ", dir); break; } catch (e) { console.log(" . ."); } }
forïŒ;;ïŒã³ã³ã¹ãã©ã¯ãã¯ãç¡éã«ãŒããé 眮ããæ¹æ³ã§ãã 蚱容ã§ããæ¹åã«å°éããå Žåã«ã®ã¿è±èœããŸãã ããããpromptDirectionãšããååã®ã¹ãã«ãééããŸãããããã«ããããundefined variableããšãããšã©ãŒãçºçããŸãã ãŸããcatchãããã¯ã¯äŸå€eã®å€ãç¡èŠãããããå¥ã®åé¡ãåŠçããŠãããšä»®å®ããŠãã¹ããŒãããäŸå€ã¯èª€ã£ãå ¥åã®çµæã§ãããšèŠãªããŸãã ããã«ãããç¡éã«ãŒããçºçããç¡å¹ãªå€æ°åã«é¢ããæçšãªãšã©ãŒã¡ãã»ãŒãžãé衚瀺ã«ãªããŸãã
ååãšããŠãã©ããã«ãªãã€ã¬ã¯ããããšããç®æšããªãéãããã®ãããªäŸå€ããã£ããããªãã§ãã ãããããšãã°ããããã¯ãŒã¯ãä»ããŠãããã°ã©ã ã®ã¯ã©ãã·ã¥ã«ã€ããŠå¥ã®ã·ã¹ãã ã«éç¥ããŸãã ããã«ãéèŠãªæ å ±ãé ãããŠãããã©ããã泚ææ·±ã確èªããŠãã ããã
ãã®ãããç¹å®ã®äŸå€ããã£ããããå¿ èŠããããŸãã catchãããã¯ã§ãçºçããäŸå€ãé¢å¿ã®ããäŸå€ã§ãããã©ããã確èªããããã§ãªãå Žåã¯å床ã¹ããŒããŸãã ããããã©ã®ããã«äŸå€ãèªèããã®ã§ããããïŒ
ãã¡ãããã¡ãã»ãŒãžããããã£ããåŸ æ©ããŠãããšã©ãŒã¡ãã»ãŒãžãšæ¯èŒã§ããŸãã ããããããã¯ã³ãŒããèšè¿°ããããã®ä¿¡é Œæ§ã®äœãæ¹æ³ã§ã-ãœãããŠã§ã¢ææ決å®ãè¡ãããã«äººïŒã¡ãã»ãŒãžïŒã察象ãšããæ å ±ã䜿çšããŸãã 誰ãããã®ã¡ãã»ãŒãžãå€æŽãŸãã¯ç¿»èš³ãããšããã«ãã³ãŒãã¯æ©èœããªããªããŸãã
æ°ããã¿ã€ãã®ãšã©ãŒãå®çŸ©ããinstanceofã䜿çšããŠèªèããŠã¿ãŸãããã
function InputError(message) { this.message = message; this.stack = (new Error()).stack; } InputError.prototype = Object.create(Error.prototype); InputError.prototype.name = "InputError";
ãããã¿ã€ãã¯Error.prototypeãç¶æ¿ããŠãããããInputErrorã¿ã€ãã®ãªããžã§ã¯ãã«å¯ŸããŠinstanceof Errorãå®è¡ãããŸãã ãããŠãä»ã®æšæºã¿ã€ãã®ãšã©ãŒïŒErrorãSyntaxErrorãReferenceErrorãªã©ïŒãšåæ§ã«ãnameããããã£ãå²ãåœãŠãããŸãã
ã¹ã¿ãã¯ããããã£ãå²ãåœãŠããšãErrorãªããžã§ã¯ããäœæãããã®ã¹ã¿ãã¯ã䜿çšããããšã«ãããããããµããŒããããã©ãããã©ãŒã ã§ããã®ãªããžã§ã¯ãã«ã¹ã¿ãã¯ãã©ããã³ã°ãæž¡ãããšããŸãã
çŸåšãpromptDirectionã¯ãã®ãããªãšã©ãŒãäœæã§ããŸãã
function promptDirection(question) { var result = prompt(question, ""); if (result.toLowerCase() == "left") return "L"; if (result.toLowerCase() == "right") return "R"; throw new InputError("Invalid direction: " + result); } . for (;;) { try { var dir = promptDirection("?"); console.log(" ", dir); break; } catch (e) { if (e instanceof InputError) console.log(" . ."); else throw e; } }
ãã®ã³ãŒãã¯InputErrorã€ã³ã¹ã¿ã³ã¹ã®ã¿ããã£ããããä»ã®äŸå€ãã¹ãããããŸãã åãã¿ã€ããã¹ãå床è¡ããšãæªå®çŸ©ã®å€æ°ã«é¢ããã¡ãã»ãŒãžãæ£ãã衚瀺ãããŸãã
ã¢ãµãŒã·ã§ã³
ã¯ã¬ãŒã ã¯ãåçŽãªãšã©ãŒãã§ãã¯ã®ããã®ããŒã«ã§ãã ãã«ããŒé¢æ°ã®ã¢ãµãŒããæ€èšããŠãã ããã
function AssertionFailed(message) { this.message = message; } AssertionFailed.prototype = Object.create(Error.prototype); function assert(test, message) { if (!test) throw new AssertionFailed(message); } function lastElement(array) { assert(array.length > 0, " lastElement"); return array[array.length - 1]; }
ããã¯ãå€ã®èŠä»¶ãå³ããããã³ã³ãã¯ããªæ¹æ³ã§ãæå®ãããæ¡ä»¶ãæºããããªãå Žåã«äŸå€ãã¹ããŒããŸãã ããšãã°ãé åã®æåŸã®èŠçŽ ãååŸããlastElementé¢æ°ã¯ãã¢ãµãŒã·ã§ã³ã䜿çšããªãã£ãå Žåã空ã®é åã«å¯ŸããŠundefinedãè¿ããŸãã空ã®é åã®æåŸã®èŠçŽ ãååŸããŠãæå³ããããŸãããããã¯æããã«ããã°ã©ããŒã®ãšã©ãŒã«ãªããŸãã
ã¹ããŒãã¡ã³ãã¯ããšã©ãŒãã³ããããããå Žæã§ããã°ã©ã ã®äžæãåŒãèµ·ããããšã確èªããæ¹æ³ã§ãããã·ã¹ãã ãä»ããŠéä¿¡ãããããã«é¢é£ããªãä»ã®å Žæã§åé¡ãåŒãèµ·ããã ãã§ãªããå¥åŠãªéãäžããŸãã
ãŸãšã
ãšã©ãŒãšç¡å¹ãªå ¥åã¯äººçã§èµ·ãããŸããããã°ã©ã ã®ãšã©ãŒãæ¢ããŠä¿®æ£ããå¿ èŠããããŸããèªåæ€èšŒã·ã¹ãã ã䜿çšããŠãããã°ã©ã ã«ã¹ããŒãã¡ã³ããè¿œå ããããšã§ãç°¡åã«èŠã€ããããšãã§ããŸãã
ããªãã®ããã°ã©ã ã«ãªãäœãã«ãã£ãŠåŒãèµ·ããããåé¡ã¯ãå°å³ããã£ãŠæ±ãããªããã°ãªããŸãããåé¡ãããŒã«ã«ã§è§£æ±ºã§ããå Žåããã®ãããªã±ãŒã¹ã远跡ããããã«ç¹å¥ãªå€ãè¿ãããšãèš±å¯ãããå ŽåããããŸããä»ã®å Žåã«ã¯ãäŸå€ã䜿çšããããšãæãŸããã§ãã
äŸå€ãã¹ããŒãããšãtry / catchãããã¯ãæ€åºããããŸã§ããŸãã¯ã¹ã¿ãã¯ã®äžçªäžã«éãããŸã§ã¹ã¿ãã¯ãå·»ãæ»ãããŸããäŸå€ã®å€ã¯ãcatchãããã¯ã«æž¡ãããŸããããã«ããããã®äŸå€ãå®éã«åŸ æ©ããŠãããã®ã§ããããšã確èªããŠåŠçã§ããŸããããã°ã©ã ã¹ããªãŒã å ã®äºæž¬äžå¯èœãªã€ãã³ããåŠçããã«ã¯ãfinallyãããã¯ã䜿çšããŠãã³ãŒãã®ç¹å®ã®éšåãã©ã®ãããªå Žåã§ãå®è¡ãããããã«ããŸãã
æŒç¿
ãªãã¬ã€
50ïŒ ã®å Žåã«2ã€ã®æ°å€ãä¹ç®ããä»ã®å Žåã«ã¯MultiplicatorUnitFailureåã®äŸå€ãã¹ããŒããé¢æ°primitiveMultiplyããããšããŸãããããã©ããããé¢æ°ãäœæããæåããçµæãåŸããããŸã§åçŽã«åŒã³åºããŸãã
å¿ èŠãªäŸå€ã®ã¿ãåŠçããããã«ããŠãã ããã
function MultiplicatorUnitFailure() {} function primitiveMultiply(a, b) { if (Math.random() < 0.5) return a * b; else throw new MultiplicatorUnitFailure(); } function reliableMultiply(a, b) { // } console.log(reliableMultiply(8, 8)); // â 64
ããã¯ããã¯ã¹
ãã®ãããªããªãäžèªç¶ãªãªããžã§ã¯ããèããŠã¿ãŸãããïŒ
var box = { locked: true, unlock: function() { this.locked = false; }, lock: function() { this.locked = true; }, _content: [], get content() { if (this.locked) throw new Error("!"); return this._content; } };
ããã¯ããã¯ä»ãã®ç®±ã§ããå éšã«ã¯é åããããŸãããããã¯ã¹ãããã¯ãããŠããªãå Žåã«ã®ã¿å°éã§ããŸãã_contentããããã£ã«çŽæ¥ã¢ã¯ã»ã¹ããããšã¯ã§ããŸããã
ããã¯ã¹ã®ããã¯ã解é€ããæ©èœãå®è¡ããçµäºããåã«ããã¯ã¹ãå床ããã¯ããé¢æ°ãåŒæ°ãšããŠåãé¢æ°withBoxUnlockedãèšè¿°ããŸããæž¡ãããé¢æ°ãæ£ããå®è¡ããããäŸå€ãã¹ããŒãããã¯é¢ä¿ãããŸããã
function withBoxUnlocked(body) { // } withBoxUnlocked(function() { box.content.push(""); }); try { withBoxUnlocked(function() { throw new Error(" ! !"); }); } catch (e) { console.log(" :", e); } console.log(box.locked); // â true
ããŒãã¹ã²ãŒã ãšããŠãwithBoxUnlockedãåŒã³åºããšããããã¯ã¹ãããã¯ãããŠããªããšãã¯ãããã¯ã¹ãããã¯ãããŠããªãããšã確èªããŠãã ããã