# ã2024幎5æãJavaScript Primer æ©æèŒªèªäŒð tags: `JSPrimerð ` - [é嬿ŠèŠ](https://bootcamp.fjord.jp/regular_events/53) â»FBCå ããŒãž - [HackMDãŸãšã](https://hackmd.io/NYIcQqMUSSqfEFd9rUG7fg) - [JavaScript Primer Webçããã](https://jsprimer.net/) <hr/> ## ð 2024-5-4(å) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @sugiwe - ãã©ã€ããŒ: @yumiya ### ð èªãã ãšãã - from - https://jsprimer.net/basic/string/#match-capture-by-regexp - to - https://jsprimer.net/basic/string/#tagged-template-function ### 次å - https://jsprimer.net/basic/string/#tagged-template-function ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - matchã¡ãœãããmatchAllã¡ãœãããgãã©ã°ã埩ç¿ããªããšâŠ - replaceã¡ãœãããšreplaceAllã¡ãœããã¯ãªããã¹ããšå ¥ã£ãŠãã - JSããä»ãŸã§ã¯ãããã£ãŠãããã© ES20** ã§ãããªäŸ¿å©ãªã¡ãœãããã§ããŸããïŒãã£ãŠè©±ã ããã§ãå®éã©ãã©ã䟿å©ã«ãªã£ãŠããã®ã ãããã©é ã远ãã€ããªãâŠæ± - URLã®æ£èŠåãã¿ãããªäŸã¯ãããããããŠé¢çœãã£ã - æ£èŠè¡šçŸã£ãŠãŠãŒã¹ã±ãŒã¹ãã€ã¡ãŒãžã§ããªããšå šç¶ãã³ãšæ¥ãªãã®ã§ãããããäŸããã£ãšèŠãã - ãšæã£ããããã®äŸã¯èª¬æã®ããã®äŸã§ãå®éã«URLãæ±ãå Žåã«ã¯èªåã§ããããåããªãã§webæšæºAPIã® URL ãªããžã§ã¯ãã䜿ã£ããããã¡ã€ã«ãã¹ãæ±ããªã Path ã¢ãžã¥ãŒã«ã䜿ããªã©ããæ¹ãè¯ãããã - GWã¯ãã©ã¯ãã£ã¹ããã£ã±ãé²ããããð ãšæã£ããŸãŸã»ãšãã©é²ãŸãGWååãçµãã£ã - haruguchi - æ£èŠè¡šçŸã£ãŠäŸ¿å©ã ãã©äœ¿ãæé£ããããããŠãããªã«äœ¿ãæãªã - matchãªããžã§ã¯ãã¯ãªããè²ã ããæãã®ãªããžã§ã¯ãã«ãªã£ãŠã - GWã¯ãããŸãäºå®ããªãRubyKaigiã®äºç¿ãããŠããçµãããã - 掻åäžæ¯ãããŠèªããã®ãªããšãæ¥å ±æŒã£ãŠããããªãããã¡ã w - @yumiya - `match`ãš`matchAll`ã¡ãœããã¯ããããããçµæããé åãã§è¿ã - æ£èŠè¡šçŸã®`g`ãã©ã°ã䜿ãå Žåã`matchAll`ã¡ãœãã - RegExpã®`exec`ã¡ãœããã§ãåããããªçµæã«ãªããã`match`ã¡ãœãããšå°ãæåãç°ãªãã®ã§æ³šæ - æååååŸã®äœ¿ãåã - `String`ã¡ãœããã§è¡šçŸã§ããããšã¯`String`ã¡ãœããã䜿ã - æè»æ§ãææ§ãªæ€çŽ¢ãå¿ èŠãªå Žåã¯ãæ£èŠè¡šçŸãå©çšãã - æåã®çµã¿ç«ãŠã§ãURLããã¡ã€ã«ãã¹ãäœãéã«ã¯URLãªããžã§ã¯ããªã©ã䜿ã - `+`æŒç®åã§çµã¿ç«ãŠãªã - 䌌ããããªåŠçã®é¢æ°ãå¢ããŠããã®ã§ã䜿ãåãæ¹ãèŠããŠãããã <hr/> ## ð 2024-5-5(æ¥) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @karlely - ãã©ã€ããŒ: @sugiwe ### ð èªãã ãšãã - from - https://jsprimer.net/basic/string/#tagged-template-function - to - https://jsprimer.net/basic/string-unicode/#regexp-unicode ### 次å - https://jsprimer.net/basic/string-unicode/#count-of-code-points ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - ã¿ã°ã€ããã³ãã¬ãŒã颿°ïŒ`颿°()`ã§ãªã颿°``ïŒã䜿ããšã颿°ã®åŒã³åºãã«åŒå±éã®ãããªããšãã§ãã - ã¿ã°ã€ããã³ãã¬ãŒããªãã©ã«ãããã£ããããªããããªããããªããã - çµµæåãäžéšã®æŒ¢åã¯ã2ã€ã® Code Unit ã䜿ã£ãŠè¡šçŸããã®ã§ã`.length`ã§æåæ°ãã«ãŠã³ããããš2ã€åã«ãªã - uãã©ã°ãã€ããæ£èŠè¡šçŸã¯ãæååãCode Pointããšã«æ±ã - uãã©ã°ãç¡ããšäžäœãµãã²ãŒãã ãããããããŠæååãããŠããŸãããšããã - åºæ¬çã«ã¯uãã©ã°ãã€ããŠãããæ¹ãããã£ãŠããšã㪠- äŸæãçè§£ããã«ãããããã®ç« èªäœã§èª¬æãããŠããéšåãçè§£ã§ããŠããªãã®ããå šç¶é¢ä¿ãªããã©ãã®äŸæã«åºãŠãã颿°ãšããããã£ãŠãªããŠå šäœãããããªããªã£ãŠããã®ãããŸãããã®æŽçãããªããšãããªããªãšæã£ãããã - @karlley - ã¿ã°ä»ããã³ãã¬ãŒã颿°ã¯æååãã³ã³ããã¹ãã«å¿ããåŠçãããæãã«ãã£ãŠããã - ã³ãŒããã€ã³ããšã³ãŒããŠãããã®éãããŸã ãã¯ããšããŠãã - ã³ãŒããŠãããã§è¡šçŸããããªãã³ãŒããŠãããã2ã€ã®ã³ãŒããŠãããã§è¡šçŸããã®ãã³ãŒããã€ã³ãã£ãŠããšïŒ - æååã¯Code Unitãé çªã«äžŠãã ãã®ãšããŠæ±ããã - String.lengthã¯ãã®åæ°ã調ã¹ãã¡ãœãã - æååã¯ã ãºã... - @yumiya - [ã¿ã°ã€ããã³ãã¬ãŒã颿°](https://jsprimer.net/basic/string/#tagged-template-function)ã§ãåŒæ°å ã®ç¹æ®æåïŒ`&`,`%`,`$`,`æ¥æ¬èª`ãªã©ïŒããšã¹ã±ãŒãããŠURLãçæã§ãã - æåã«ã¯ãäžæã®IDããæ¯ãããŠããŠããã®IDã**Code Point**ïŒç¬Šå·äœçœ®ïŒãšåŒã¶ - Stringã®`codePointAt`ã¡ãœããã§ã³ãŒããã€ã³ããè¿ã - `String.fromCodePoint`ã¡ãœããã§ãã³ãŒããã€ã³ãã«å¯Ÿå¿ããæåãè¿ã - Unicodeã¯ã³ãŒããã€ã³ãã§è¿ãããJavaScriptã®æååã¯UTF-16ã§å€æãããCode UnitïŒç¬Šå·åäœïŒã«ãªã - çµµæåãªã©ã®æ±ããCode PointãšCode Unitã§ç°ãªã - UTF-16ã§ã¯2ã€ã®Code Unitã®çµã¿åããïŒåèš4ãã€ãïŒã§1ã€ã®æåïŒ1ã€ã®Code PointïŒã衚çŸãããµãã²ãŒããã¢ãšåŒã¶ - ãµãã²ãŒããã¢ã§è¡šçŸããŠããæååã¯ãäžäœãµãã²ãŒãïŒ0çªç®ïŒãšäžäœãµãã²ãŒãïŒ1çªç®ïŒãçµã¿åããã - æ£èŠè¡šçŸã䜿ãéã«ã¯ãuïŒunicodeïŒãã©ã°ãä»ããã»ããè¯ããã - Firefoxã䜿ããšæååãéšåã«ã³ãŒããã€ã³ãã衚瀺ããããã - Chromeã»SafariïŒ`console.log("𩞜"[0]);` => âã®äžã«ãïŒã - FirefoxïŒ`console.log("𩞜"[0]);` => â¡ã®äžã«ãD867ã <hr/> ## ð 2024-5-11(å) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @karlley - ãã©ã€ããŒ: @yumiya ### ð èªãã ãšãã - from - https://jsprimer.net/basic/string-unicode/#count-of-code-points - to - https://jsprimer.net/basic/function-scope/#scope-chain ### 次å - https://jsprimer.net/basic/function-scope/#global-scope ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - çµµæåããšãããæååãšUnicodeã®é¢ä¿ã¯é£ãã⊠- `new String("æåå")`ã®ããã«Stringãªããžã§ã¯ããnewããŠäœã£ãStringãªããžã§ã¯ãã®ã€ã³ã¹ã¿ã³ã¹ããã©ãããŒãªããžã§ã¯ããšåŒã¶ - ã©ãããŒãªããžã§ã¯ãã§äœã£ã `new String("æåå")`ã¯`typeof`ã§`object`ã«ãªãããããªããã£ãåã§äœã£ã`"æåå"`ã¯`typeof`ã§`string`ã«ãªãããããããããã - æçµçã«ã©ãããŒãªããžã§ã¯ãã¯ãããŸã䜿ããã«ãæ®éã®ãªãã©ã«ã§æžãæ¹ãè¯ãã§ããããšã®ããšã§ãããããããšæã£ã - ã¹ã³ãŒããã§ãŒã³ - OUTERãããã¯ã¹ã³ãŒãã§å®çŸ©ãã倿°ã¯INNERãããã¯ã¹ã³ãŒãã§åç §ã§ããïŒINNERãæ¢ããŠããã°ãããåç §ããªããã°OUTERãæ¢ããŠãããåç §ïŒ - INNERãããã¯ã¹ã³ãŒãã§å®çŸ©ãã倿°ã¯OUTERãããã¯ã¹ã³ãŒãã§åç §ã§ããªã - ã¹ã³ãŒããã§ãŒã³ïŒã¹ã³ãŒãã®å ¥ãåïŒãããªããŠãã以äžãšãªã - ãããã¯ã®å€ã§å®çŸ©ãã倿°ã¯ãããã¯ã®äžã§åç §ã§ãã - ãããã¯ã®äžã§å®çŸ©ãã倿°ã¯ãããã¯ã®å€ã§åç §ã§ããªã - @yumiya - çµµæåãªã©ãµãã²ãŒããã¢ãå«ãæååã`length`ã§ã«ãŠã³ããããšèŠãç®ãšã¯ç°ãªãæ°å€ãè¿ã£ãŠããã®ã§æ³šæãããïŒð.length => 2ïŒ - Twitterã®ããã«ãªã¢ã«ã¿ã€ã ã§å ¥åããæåæ°ãã«ãŠã³ãããæ©èœãªã© - ããªããã£ãåã®ããŒã¿ã«ã¯åžžã«ãªãã©ã«ã䜿ãããšã§ãã©ãããŒãªããžã§ã¯ããæèããå¿ èŠããªããªã - ãããŠã©ãããŒãªããžã§ã¯ãã«ããå¿ èŠã¯ãªããã - ã©ããã£ãã±ãŒã¹ã§ã©ãããŒãªããžã§ã¯ãã«ããã®ãæ°ã«ãªã£ã - åãã¹ã³ãŒãå ã«ã¯ååã®å€æ°ãå®çŸ©ã§ããªã - ãã ã`var`ã¯äŸå€ãªã®ã§å€ãã³ãŒããç·šéãããšãã«æ³šæããã - ã¹ã³ãŒãããã¹ãããŠããå Žåãå åŽã®ã¹ã³ãŒãããå€åŽã®ã¹ã³ãŒããžå€æ°åãæ¢çŽ¢ããŠãã - ãã¹ã³ãŒããã§ãŒã³ããšåŒã¶ - ã¹ã³ãŒãã¯éå±€çãªæ§é ã«ãªã£ãŠãã - @karlley - ã©ãããŒãªããžã§ã¯ãã¯ããªããã£ãåã®å€ãã©ãããããªããžã§ã¯ã - åã¯ãªããžã§ã¯ãå - ããªããã£ãåã«å¯Ÿå¿ããããããã®ã©ãããŒãªããžã§ã¯ããååšãã - 䜿ãæã¯äžæ... - 極åãªãã©ã«åã䜿ã£ãæ¹ãæ··ä¹±ãçãŸãªã - 颿°å®çŸ©ã¯ã¹ã³ãŒããäœæããŠããã®ãšåã - ä»®åŒæ°: 颿°å®çŸ©æã«åŒæ°ã«äœãå ¥ããåãããªããããä»®åŒæ°ã - ã¹ã³ãŒããã§ãŒã³: 倿°ã®åç §ãå åŽããå€åŽã«åãã£ãŠæ¢çŽ¢ãããä»çµã¿ - ãããã¯ã®å€ -> å ã¯NGããããã¯ã®å -> å€ã¯OK - foråãªã©ã®ã«ãŒãéšåã¯å -> å€ã®å€æ°ãåç §ããŠãã <hr/> ## ð 2024-5-12(æ¥) ðãäŒã¿ð <hr/> ## ð 2024-5-18(å) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @sugiwe - ãã©ã€ããŒ: @genny ### ð èªãã ãšãã - from - https://jsprimer.net/basic/function-scope/#global-scope - to - https://jsprimer.net/basic/function-scope/#dynamic-scope ### 次å - https://jsprimer.net/basic/function-scope/#memory-management ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - ã°ããŒãã«å€æ°ã¯ããããã¹ã³ãŒãããåç §ã§ãããæ ã«æ··ä¹±ã®å ã«ããªãã®ã§ãç¡éã«ã°ããŒãã«ã¹ã³ãŒãã«å€æ°ãå®çŸ©ããªãæ¹ãè¯ãããïŒå€æ°ãåç §ã§ããç¯å²ã¯ã§ããã ãå°ããïŒ - varã®å·»ãäžããšããã®ãããïŒå®£èšã®åã«åç §ããŠããšã©ãŒã«ãªãã`unedefined`ãè¿ãïŒ - æ°ããæžãéã«ã¯varã¯äœ¿ããªãæ¹ãè¯ããã - 颿°å®£èšããåæ§ã«ãå·»ãäžãããšããã®ããããvarã®å·»ãäžãã¯ããªãã ããïŒïŒããšæã£ããã©ã颿°å®£èšã®å·»ãäžãã¯ãªããåãå ¥ããããã - 確ãã« - 峿å®è¡é¢æ°ã`()`ãèŠéããŠãŠèš³ãåãããªãã£ããã©ããªãã»ã©ãšæã£ã - ã¯ããŒãžã£ãŒããã³ãšæ¥ãªãã£ãããããšãã颿°ãè€æ°ã®å€æ°ã«ä»£å ¥ããããå倿°ããšã«é¢æ°ã®äžèº«ã®ç¶æ ã¯ä¿æãããããã£ãŠããšã§ãã€ã³ã¹ã¿ã³ã¹ãäœãã£ãœãæãã®ã€ã¡ãŒãžãæã£ãã - RubyKaigiå¢ã¯ä»æ¥ã¯ã°ãã¹ãªå¯ãŠããã§ããããð - @genny - ã¹ã³ãŒãã¯ã§ããã ãå°ãããã - var ã¯ç¹æ®ãªåããããã®ã§äœ¿ããªã - 宣èšéšåãæãè¿ã颿°ãŸãã¯ã°ããŒãã«ã¹ã³ãŒãã®å é ã«å·»ãäžããããä»£å ¥éšåã¯ãã®ãŸãŸã®äœçœ®ã«æ®ã - ã¯ããŒãžã£ãŒããããããªã⊠- ãã¯ããŒãžã£ãŒãšã¯ãå€åŽã®ã¹ã³ãŒãã«ãã倿°ãžã®åç §ãä¿æã§ããããšãã颿°ãæã€æ§è³ªã®ããšãããã - 颿°ãç¶æ ãæã£ãŠããããã«æ¯ãèãã - JSãRubyãéçã¹ã³ãŒã <hr/> ## ð 2024-5-19(æ¥) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @sugiwe - ãã©ã€ããŒ: @gennyboy ### ð èªãã ãšãã - from - https://jsprimer.net/basic/function-scope/#memory-management - to - https://jsprimer.net/basic/function-scope/#closure-usecase ### 次å - https://jsprimer.net/basic/function-scope/#closure-vs-function-object ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ãšã¯ãåç §ãããªããªã£ãäžèŠãªããŒã¿ãã¡ã¢ãªããèªåã§è§£æŸããä»çµã¿ - ã颿°ã®å®è¡ãçµäºããéã«è§£æŸãããå Žåããšã颿°ã®å®è¡ãçµäºããŠãè§£æŸãããªãå Žåãã®éããåãå šç¶ãã³ãšæ¥ãªãã£ããã©ã kitarou888 ããã®è§£èª¬ã§ããªãåãã£ãïŒ - ã¡ã¢ãªã®æŠå¿µãçè§£ããããšãããªãéèŠ - returnãæã€é¢æ°ã®çµæãä»»æã®å€æ°ã«ä»£å ¥ããŠãããšãããã£ãšåç §ããç¶ããŠãããç¶æ ã«ãªãã®ã§ãã¡ã¢ãªãè§£æŸãããªã - 倿°aãšå€æ°bã«ããããåã颿°ã®çµæãä»£å ¥ãããããããããå¥ã®ç¶æ ãä¿ã€ããšã«ãªããïŒå€æ°bã«å€æ°aãä»£å ¥ãããšåç §å ãåãã«ãªãããšããã®ãå®éã«ç»é¢ã§ç¢ºèªã§ããŠé¢çœãã£ãïŒ - React ã®é¢æ°ã³ã³ããŒãã³ãã¯ãã¯ããŒãžã£ãŒã掻çšããŠãããããã - kitarou888 ãããæµ·å€ããåå ããŠãããŠå¬ããã£ãð - @kitarou888 - å®è¡åŸã«ã¬ããŒãžã³ã¬ã¯ã·ã§ã³ããã颿°ãšãããªã颿°ã®ã¡ãã - returnããã€ããš - ãã®è¿ãå€ããã倿°ã«ä»£å ¥ããŠããããš - ã¯ããŒãžã£ãŒã¯é«é颿°ã®äžéšåãšããŠã䜿ãããŠãã - ã€ãŸãmapãªã©ã¯ã«ãŒãã®éœåºŠéšå±ãã€ãã£ãŠãããšããçè§£ã§ããïŒ - ææ¥ã¯äžçéºç£ã®ããªããŽã£ãã§æ¹çŸ€åœç«å ¬åãžè¡ã£ãŠåããŸãïŒ <hr/> ## ð 2024-5-25(å) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @sugiwe - ãã©ã€ããŒ: @karlley ### ð èªãã ãšãã - from - https://jsprimer.net/basic/function-scope/#closure-vs-function-object - to - https://jsprimer.net/basic/function-this/#method-this ### 次å - https://jsprimer.net/basic/function-this/#this-problem ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - ã¯ããŒãžã£ãŒãç¶æ ãæã€é¢æ°ãªããžã§ã¯ããã¯ã©ã¹ã«ã€ã㊠- ç¶æ ãæã€é¢æ°ãªããžã§ã¯ãã¯ã颿°ã®å€ããããããã£ã倿Žã§ãã¡ããã - ã¯ããŒãžã£ãŒã䜿ãã°å€æŽã§ããªãããã«éã蟌ããããšãã§ãã - 倧æµã¯ã¯ã©ã¹ã§ããã°è¯ããã - `globalThis`ã®äœ¿ãæããŸã ãã³ãšæ¥ãŠãªã - Rubyã§ã¯ããã·ã¥å ã«ã¡ãœããã¯æžããªããã©ãJSã§ã¯ãªããžã§ã¯ãå ã«ã¡ãœãããæžãã - thisã¯ããã©ã¯ãã£ã¹ã§ã颿°äœ¿ããšãã¯åºæ¬arrow functionãè¯ããã©ãthisã䜿ããšãã ã颿°å®£èšïŒé¢æ°åŒïŒã䜿ããããã¿ãããªè©±ã®æã«ããèŠããããarrow functionã«æ £ããŠãªãã®ã§ïŒã£ãŠãçç¥èšæ³ã£ãœãã®å šè¬ãèŠæã§ïŒthis䜿ããªããªãarrow function䜿ããªããŠè¯ããããã£ãŠæã£ãŠããããã - ããã蟺ã¯function䜿ããæŽŸãããŠè«äºããããã - æè¿ãTypeScriptã®æ¬ãèªã¿å§ããŠãReactã®æ¬ãèªã¿å§ããŠãJSã®åºç€ãåºãŠããã®ã§ãæ©ããã£ãšæ £ããŠãããããšçæããŠããããã - @haruguchi - thisããªãäžçãæ³åãããšthis(self)ã®å¿ èŠæ§ãããããã ```javascript! const person = { fullName: "Brendan Eich", age: ... gender: ... sayName: function() { return person.fullName; // this.fullName }, sayAge: function() { return person.age // this.age } sayGender: function() { return person.gender // this.gender } } // personãããªããŠuserã«ããããšæã£ãæããã ``` - ã¯ããŒãžã£ã¯ã¬ãã·ã«ã«ãªã¹ã³ãŒããé¢é£ããã®ã§Rubyã®ã¡ãœããã¯ã¯ããŒãžã£ãããªãã - RubyKaigiã§çã£ãçæŽ»ãªãºã ãåãæ»ããããéåç¿æ £ãïŒ - @karlley - jsã®ã¯ã©ã¹ã¯ã¯ã©ã¹ãã©ããã¯ã©ã¹ã£ãœãåããããã ã - åŒãšæ - åŒ: å€ãªã®ã§ããããã£ã«ãªã -> ã¡ãœããã«ã§ãã - æ: å€ã§ã¯ãªãã®ã§ããããã«ãªããªãã-> ã¡ãœããã«ã§ããªã - jsã®ãªããžã§ã¯ãã¯rubyã®ããã·ã¥ãšã»ãŒåã - ããŒã¹ãªããžã§ã¯ãã¯`.` ã®å·ŠåŽã®ãªããžã§ã¯ã -> this - 2é±éã»ã©äŒãã ã®ã§ã ãã¶é²ãã§ããŠã³ã£ãããããã颿°ã®ãšãã¯åå ãããã£ã... - ä»ã®èšèªãšå¯Ÿæ¯ããŠèªãã§ãããšå°ãã ãèŠãããçè§£ãããããªãæ°ããã <hr/> ## ð 2024-5-26(æ¥) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: @karlley - ãã©ã€ããŒ: @sugiwe ### ð èªãã ãšãã - from - https://jsprimer.net/basic/function-this/#this-problem - to - https://jsprimer.net/basic/function-this/#arrow-function-callback ### 次å - https://jsprimer.net/basic/function-this/#arrow-function-this ### ð åŠãã ããšã»ææ³ã»éè« - @sugiwe - thisé£ãã - thisã¯ããã®é¢æ°ïŒã¡ãœãããå«ãïŒãåŒã³åºãã®ããŒã¹ãªããžã§ã¯ããåç §ãããããããããªåé¡ããã - thisãå«ãã¡ãœããã倿°ã«ä»£å ¥ããå Žå - ã¡ãœããããã ã®é¢æ°ãšããŠåŒã¶ãšãããŒã¹ãªããžã§ã¯ããå€ãã£ãŠããã®ã§æå³ããªãçµæã«ãªã - callãapplyãbindã¡ãœããã§å¯ŸåŠã§ãã - åºæ¬çã«ã¯ãã¡ãœãããšããŠå®çŸ©ãããŠãã颿°ã¯ã¡ãœãããšããŠåŒã¶ - ã³ãŒã«ããã¯é¢æ°ãšthis - ã³ãŒã«ããã¯é¢æ°ãšããŠåŒã³åºãã颿°ã«ããŒã¹ãªããžã§ã¯ãããªããundefinedã«ãªã - å¯ŸåŠæ³ãšããŠãthisãäžæå€æ°ã«ä»£å ¥ããããšããæããã - Arrow Functionã䜿ãã°ãthisãå€åŽãæ¢çŽ¢ããããšã«ãªãã®ã§ããã®ä»çµã¿ã掻çšã§ãã - @karlley - ã¡ãœãããšããŠå®çŸ©ãããã®ã¯ã¡ãœãããšããŠåŒã³åºã - ã¡ãœãããšããŠå®çŸ©ããŠãããã®ã颿°ãšããŠåŒã³åºããšthisã§åç §ã§ããªãåé¡ãçºçãã - 察ç: call, bind, applyã䜿ã - ã³ãŒã«ããã¯ã§thisã䜿ã£ã颿°ãåŒã³åºããšundefinedã«ãªãå Žåããã - 察ç: ã¢ããŒé¢æ°ã䜿ã - ãããŸã§èªãã§ããšã¢ããŒé¢æ°ã䜿ãã°å šéšè§£æ±ºãããã§ããïŒãšæã£ãŠããŸããã©... æšæ¥ãã«ã°ããããèšã£ãŠããfunction掟ããããšãã話ãéã«æ°ã«ãªã£ãŠãã - @yumiya - å¯åã®ããã20åé ããŠåå ããŸããð - 2é±éã¶ãã®åå ã§ãããããã[颿°ãšthis](https://jsprimer.net/basic/function-this/)ãã®ç« ã«å ¥ã£ãŠããã®ã§ãã£ããã¢ãããå¿ èŠðšð»âð» - ã³ãŒã«ããã¯é¢æ°ã®äžã§`this`ãåç §ãããšåé¡ãçºçãããã - ãã£ãŠã³ãŒã«ããã¯é¢æ°å ã§`this`ã䜿ãå Žåã¯ã¢ããŒé¢æ°ã䜿ãã»ãããã - ã¢ããŒé¢æ°ã§å®çŸ©ããã³ãŒã«ããã¯é¢æ°ã¯ãå€åŽã®é¢æ°ã®`this`ããã®ãŸãŸå©çšãã - ã¢ããŒé¢æ°èªäœã¯`this`ãæããªã - `this`ã®å 容ãããããªããªã£ããã颿°ã®äžã«`console.log(this);`ãæžããŠãã§ãã¯ããã»ãããããããããã - å é±ã¯[RubyKaigi2024](https://rubykaigi.org/2024/)ã«åå ããŠããŸããâãããããªäººãšã話ã§ããŠãšãŠãåŠã³ã«ãªããŸããâð» - [è¬æŒå 容](https://rubykaigi.org/2024/schedule/)ã¯ãŸã£ããWakaranð€ãšæããªããèããŠãŸãããã <hr/> ## ð 2024-6-1(å) ### ð§ð»âð» ãã¡ã·ãª/ãã©ã€ã㌠- ãã¡ã·ãª: karlley - ãã©ã€ããŒ: yumiya ### ð èªãã ãšãã - from - https://jsprimer.net/basic/function-this/#arrow-function-this - to - https://jsprimer.net/basic/class/#class-declaration ### 次å - https://jsprimer.net/basic/class/#class-instance ### ð åŠãã ããšã»ææ³ã»éè« - @karlley - thisã ãºã... ãšããããããã ãèŠãã - arrow function: äžçªè¿ãå€åŽã®thisãthisã¯åºå®(éçã«æ±ºãŸã) - function: ããŒã¹ãªããžã§ã¯ããthisãthisã¯åŒã³åºãæ¹ã§å€ãã(åç) - ã¡ãœããã®çç¥èšæ³: `const obj = { fn(){åŠç} }` - ã¯ã©ã¹ã¯ãªããžã§ã¯ãã®äžçš®(ç¹å¥ãªãã®ã§ã¯ãªãã€ã¡ãŒãžïŒ) - use strictã䜿ããšãããã¬ãã«ã®ãªããžã§ã¯ããåç §ã§ããªãã®ã¯ãªãïŒ - äœ¿ãæ¹ãééãããªãããã«ããŠãã仿§ - thisãšããŠåç §ãã䜿ãéããªã - ã»ãã¥ãªãã£é¢ããã - haruguchi - thisé£ãããªãã - 1. ã¢ããŒé¢æ°ä»¥å€ã®å Žå - fn() ã ãšããŒã¹ãªããžã§ã¯ããªããããããã¬ãã«ã®thisãåç § - xxx.fn() ã ãšããŒã¹ãªããžã§ã¯ãããããããŒã¹ãªããžã§ã¯ã(xxx)ãthis - ã€ãŸãåŒã³åºãæ¹ã«ãã£ãŠthisãæ±ºãŸã(åçã«thisãæ±ºãŸã) - 2. ã¢ããŒé¢æ°ã®å Žå - 颿°èªäœã¯thisãæããªãã®ã§ã¢ããŒé¢æ°ãå®çŸ©ããå€åŽã®ã¹ã³ãŒããžãšthisãåç §ããŠãã - ã€ãŸãå®çŸ©ããã¹ã³ãŒãã«ãã(éçã«thisãæ±ºãŸã) - ããã ãçè§£ããã9å²ã¯å€§äžå€«ãå ¥ãåã«ãªããšããããããã©ãã - ããšmapã¿ããã«çšæãããŠãã颿°ã¯thisããããããªããªãã芪åã ãšããã¥ã¡ã³ãã«æžããŠãã£ãããããæžããŠãªãã£ããèªåã§ãœãŒã¹ã³ãŒãèŠãªããšãããªããããåºæ¬çã«æèããªãã§è¯ããããªäœãã«ããŠãããŠããã¯ããããã¯ãã - yumiya - 埩ç¿ãã§ããŠããªãã£ãã®ã§ãä»åã®ç« ã®å 容ã¯ãªããªãçè§£ã§ããªãã£ãð - `use strict`ã®æç¡ã§`this`ã®å®çŸ©ãå€ããå Žåããã - > strict modeã§ã¯ãªãç¶æ³ã§thisãundefinedã®å Žåã¯ãthisãã°ããŒãã«ãªããžã§ã¯ããåç §ããããã«å€æãããåé¡ãããããã§ãã - ã¢ããŒé¢æ°èªèº«ã¯`this`ãæããªãïŒåç §ïŒ[å¯ŸåŠæ³: Arrow Functionã§ã³ãŒã«ããã¯é¢æ°ãæ±ã](https://jsprimer.net/basic/function-this/#arrow-function-callback)ïŒ - ãã£ãŠãèªèº«ã®å€åŽã®ã¹ã³ãŒãã«å®çŸ©ããããã£ãšãè¿ã颿°ã®thisã®å€ããåã - ã¢ããŒé¢æ°ã§ã³ãŒã«ããã¯é¢æ°ãå®çŸ©ãããšã`this`ãäžæå€æ°ã«ä»£å ¥ããªããŠãããªã - ã¡ãœããã®çç¥èšæ³ïŒåç §ïŒ[ã¡ãœããã®çš®é¡](https://jsprimer.net/basic/function-this/#type-of-method)ïŒ - const obj = { fn(){åŠç} }
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up