
ã¯ãã¼ã¸ã£ã¼ï¼Closureï¼ã®æ¦å¿µã¯é¢æ°åããã°ã©ãã³ã°ã«ããã¦éè¦ã§ãããJavaScriptã®é¢æ¥ã§ãã質åãããäºãããã¾ãã
ã©ãã§ã使ç¨ããã¦ãã¾ãããã¯ãã¼ã¸ã£ã¼ã¯ææ¡ããã®ãã¨ã¦ãå°é£ã§ãããã¾ãã
ã¾ããã¯ãã¼ã¸ã£ã¼ãå¦ã¶ã¾ãã«ï¼ã¹ã³ã¼ãï¼ããã³ï¼ã¬ãã·ã«ã«ã¹ã³ã¼ãï¼ã®åºæ¬ãå¦ã¶å¿ è¦ãããã¾ãã
ããã¦ãåæã¨ãã¦JSã®å¤æ°ããã³é¢æ°ã«ç²¾éãã¦ãããã確èªä¸ããã
ãã®è¨äºã§ã¯ãJavaScriptã¯ãã¼ã¸ã£ã¼ã®ä»çµã¿ããã³JavaScriptã¹ã³ã¼ãã«ã¤ãã¦è§£èª¬ãã¾ãã
ã¹ã³ã¼ã
JavaScriptã®ã¹ã³ã¼ã(Scope)ã¯ã夿°ã颿°ãã©ãããã¢ã¯ã»ã¹å¯è½ããå®ç¾©ããä»çµã¿ã§ãã
夿°ã颿°ãã©ãã§å®£è¨ããããã«ãã£ã¦ããã®å¤æ°ã颿°ãã©ã®ç¯å²ã§æå¹ããæ±ºã¾ãã¾ãã
夿°ã®ã¢ã¯ã»ã¹å¯è½æ§ã¯ãã¹ã³ã¼ãã«ãã£ã¦ç®¡çããã¾ãã
ãã®ã¹ã³ã¼ãå ã§å®ç¾©ããã夿°ã«ã¯èªç±ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
ãããããã®ã¹ã³ã¼ãã®å¤ã§ã¯ããã®å¤æ°ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ããã
JavaScriptã§ã¯ã颿°ãã³ã¼ããããã¯ã«ãã£ã¦ã¹ã³ã¼ãã使ããã¾ãã
ã¹ã³ã¼ãã¯ãã°ãã¼ãã«ã¹ã³ã¼ãã¨ãã¼ã«ã«ã¹ã³ã¼ãã®2ã¤ã®ã¹ã³ã¼ããããã¾ãã
ã» ã°ãã¼ãã«ã¹ã³ã¼ã
ããã°ã©ã ã®ã©ãããã§ãã¢ã¯ã»ã¹ã§ãã夿°ã¯ãã°ãã¼ãã«ã¹ã³ã¼ãã«åå¨ããã¨è¨ããã¾ãã
ã°ãã¼ãã«ã¹ã³ã¼ãã®å¤æ°ã¯ãletãconstãããã³ varã®3ã¤ã®ãã¼ã¯ã¼ãã®ããããã使ç¨ãã¦å®ç¾©ã§ãã¾ãã
var scope = "Global"; console.log(scope) // Global function access() { console.log(scope) // ã°ãã¼ãã«å¤æ°ã¸ã®ã¢ã¯ã»ã¹ } access() // Global
let scope = "Global"; const mainFunc = () => { console.log(scope) } mainFunc() // Global console.log(scope) // Global
See the Pen JavaScript global scope by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ããã§ãscope夿°åã¯mainFunc颿°å
ã§ãå¤é¨ã§ãã¢ã¯ã»ã¹ã§ãã¾ãã
ãã®scopeã«ã¯ãã³ã¼ãå
ã®ã©ãããã§ãã¢ã¯ã»ã¹ã§ãã¾ãã
ãããã£ã¦ãscope夿°ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã«åå¨ãã¾ãã
ã» ãã¼ã«ã«ã¹ã³ã¼ã
䏿¹ããã¼ã«ã«ã¹ã³ã¼ãã¯ã颿°å ã§å®£è¨ãã夿°ã¯ãã¹ã¦ããã¼ã«ã«ã¹ã³ã¼ããæã¤ã¨è¨ããã¾ãã
ã¤ã¾ãã颿°å ã§ãã¼ã«ã«å¤æ°ã«ã¢ã¯ã»ã¹ã§ãã¾ãã
颿°å ã§å®ç¾©ããã夿°ã«å¤é¨ã¾ãã¯å¥ã®é¢æ°ããã¢ã¯ã»ã¹ãããã¨ããã¨ãã¨ã©ã¼ãã¹ãã¼ããã¾ãã
ãã¼ã«ã«ã¹ã³ã¼ãã®ä¾ã以ä¸ã«ç¤ºãã¾ãã
function myFun() { let name = "deve.K"; console.log(name); } myFun(); console.log(name); //ReferenceError: name is not defined
See the Pen JavaScript Local scope by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ã» ãããã¯ã¹ã³ã¼ã
2015å¹´ã«ES6(ECMAScript 6)ãå°å ¥ãããåã¯ãJavaScriptã«ã¯ã°ãã¼ãã«ã¹ã³ã¼ãã¨ãã¼ã«ã«ã¹ã³ã¼ãã®2種é¡ã®ã¹ã³ã¼ãããããã¾ããã§ããã
letããã³constãã¼ã¯ã¼ãã®å°å ¥ã«ãããJavaScriptã«æ°ããã¿ã¤ãã®Scopeã追å ããã¾ããã
ããããããã¯ã¹ã³ã¼ãã§ãã
ããã¯ã夿°ããããã¯ã®ä¸ã§å®£è¨ãããå ´åã«ä½ããã¾ãã
ãã®ãããã¯ã¨ã¯ã䏿¬å¼§{ }ã§å²ã¾ããã³ã¼ããããã¯ã®ãã¨ãæãã¾ãã
ç¹å®ã®ãããã¯({}ã§è¡¨ããã) å ã§å®£è¨ããã夿°ã«ããããã¯ã®å¤é¨ããã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ããã
function myFun() { if (true) { let x = 10; console.log(x); // 10 } console.log(x); // ReferenceError: x is not defined }
ä¸è¨ã§ã¯ã夿°xã¯ifæã®ãããã¯å
ã§å®£è¨ããã¦ããããã®ãããã¯å
ã§ã®ã¿ã¢ã¯ã»ã¹ãå¯è½ã§ãã
ãã¼ã«ã«ã¹ã³ã¼ãã¨åãã§ã¯ï¼ã¨çåã«æããã¾ãããï¼
ãããµãã«ãããæç¢ºã«çè§£ãã¾ãããã
ãã¼ã«ã«ã¹ã³ã¼ãã¨ãããã¯ã¹ã³ã¼ãã¯ãæ¬è³ªçã«ã¯åãã§ãã
ã§ããããã¼ã«ã«ã¹ã³ã¼ãã¯ã颿°å ã§å¤æ°ãå®ç¾©ãããã®é¢æ°ã®å é¨ã§ã®ã¿ããã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ããããã«ããæ¹æ³ã¨ãã¦ä½¿ç¨ãã¾ãã
ãããã¯ã¹ã³ã¼ãã¯ã䏿¬å¼§{ }ã§å²ã¾ãããããã¯å
ã§å¤æ°ãå®ç¾©ãããã®ãããã¯ã®å
é¨ã§ã®ã¿ãã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ããããã«ããæ¹æ³ã§ãã
ãã¼ã«ã«ã¹ã³ã¼ãã¯ãå¤ãããåå¨ãã¦ããæ¦å¿µã§ãã
ãããã¯ã¹ã³ã¼ãã¯ãifæãforã«ã¼ããªã©ã®ãããã¯ã¹ã³ã¼ãå ã§å¤æ°ã宣è¨ãããã¨ãã§ãã¾ããããã¼ã«ã«ã¹ã³ã¼ãã¯ä¸»ã«é¢æ°å ã§å¤æ°ã宣è¨ããããã«ä½¿ç¨ããã¾ãã
æ¬è³ªçã«ã¯ããã¼ã«ã«ã¹ã³ã¼ãã¯ãããã¯ã¹ã³ã¼ãã§ãããã¾ãã
ã§ããããããã¯ã¹ã³ã¼ãã¯ããç´°ããç¯å²ãå¶éããããã®æ©è½ã¨ãã¦ããã¼ã«ã«ã¹ã³ã¼ãã¨åæ§ã®æ©è½ãæã£ã¦ãã¾ãã
ã¾ãããããã¯ã¹ã³ã¼ã㯠varãã¼ã¯ã¼ãã§ã¯æ©è½ãã¾ããã
ãã®ããã«letã¾ãã¯constãã¼ã¯ã¼ãã使ç¨ã§ãã¾ãã
ã» é¢æ°ã¹ã³ã¼ã
颿°ã¹ã³ã¼ãã¯ã颿°å ã§å®£è¨ããã夿°ã颿°ã®å é¨ã§ã®ã¿ã¢ã¯ã»ã¹å¯è½ã§ãããã¨ãæå³ãã¾ãã
颿°ã¹ã³ã¼ãå ã§å®£è¨ããã夿°ã¯ã颿°ã®å¤é¨ããã¯ã¢ã¯ã»ã¹ã§ãã¾ããã
ãã¡ããã颿°ã¹ã³ã¼ãã¨ãã¼ã«ã«ã¹ã³ã¼ãã¯ä¼¼ã¦ããæ¦å¿µã§ããããããã«ç°ãªãç¹ãããã¾ãã
颿°ã¹ã³ã¼ãã夿°ã®å©ç¨å¯è½æ§ã«ã©ã®ãããªå½±é¿ãä¸ãããè¦ã¦ã¿ã¾ãããã
以ä¸ã®å¤æ°ã¯ã颿°num()ã§ä½ãããã¹ã³ã¼ãã«å±ãã¦ãã¾ãã
function num() { // function scope let count = 0; console.log(count); // 0 } num(); console.log(count); // ReferenceError: count is not defined
count夿°ã¯ãnum()ã®ç¯å²å
ã§èªç±ã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
ããããnum()ã®ã¹ã³ã¼ãå¤ã§ã¯ãcountã¯ã¢ã¯ã»ã¹ã§ãã¾ããã
ã¨ã«ããå¤ããcountã«ã¢ã¯ã»ã¹ãããã¨ããã¨ãJavaScriptã¯ReferenceError: count is not definedãæãã¾ãã
颿°ãã³ã¼ããããã¯ã®å é¨ã§å¤æ°ãå®ç¾©ããå ´åããã®å¤æ°ã¯ãã®é¢æ°ãã³ã¼ããããã¯ã®å é¨ã§ã®ã¿ä½¿ç¨ãããã¨ãã§ãã¾ãã
ãã¼ã«ã«ã¹ã³ã¼ãã¨é¢æ°ã¹ã³ã¼ãã®éãã¯ããããã¯ã¨é¢æ°ã®ã¹ã³ã¼ãã®éãã«ããã¾ãã
å è¿°ããããã«ããã¼ã«ã«ã¹ã³ã¼ãã¯ãããã¯ã¹ã³ã¼ãã§ããã颿°ã¹ã³ã¼ãã¯é¢æ°å ã®ã¹ã³ã¼ãã«éå®ããã¾ãã
ã¤ã¾ãã夿°ãã©ã®ç¯å²ã§æå¹ããå¶å¾¡ããæ¹æ³ã«éããããã¨ããäºã§ãã
ãããã¯ã¹ã³ã¼ãã¯ã䏿¬å¼§{ }ã§å²ã¾ãããããã¯å
ã§ã®ã¿æå¹ã§ããã颿°ã¹ã³ã¼ãã¯ã颿°å
ã§ã®ã¿æå¹ã§ããã¨ããéãã§ãã
ã¾ããã¹ã³ã¼ãã夿°ãåé¢ãããã¨ããæ§è³ªããããã¾ãã
ç°ãªãã¹ã³ã¼ãããåãååã®å¤æ°ãæã¤ãã¨ãã§ããã®ã§ãããã¯ç´ æ´ããããã¨ã§ãã
ç°ãªãã¹ã³ã¼ãã§å ±éã®å¤æ°å(countãindexãcurrentãvalueãªã©)ãè¡çªãããã¨ãªãåå©ç¨ãããã¨ãå¯è½ã¨ãããã¨ã§ãã
ä¸è¨ã§ã®foo()ã¨num()ã®é¢æ°ã¹ã³ã¼ãã¯ãããããç¬èªã®ãåãååã®count夿°ãæã¡ã¾ãã
function foo() { // "foo" function scope let count = 0; console.log(count); // logs 0 } function num() { // "num" function scope let count = 1; console.log(count); // logs 1 } foo(); num();
See the Pen JavaScript 颿°ã¹ã³ã¼ãã®å¤æ°ã®åé¢ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
foo()ã¨num()ã®é¢æ°ã¹ã³ã¼ãããã®count夿°ãè¡çªãã¾ããã
ã¤ã¾ãã颿°ã¹ã³ã¼ãå ã§åã夿°åã宣è¨ãããå ´åããã®å¤æ°ã¯åãååã§ãå¥ã®å¤æ°ã¨ãã¦æ±ããã¾ãã
ãã®ããã«ã颿°ã¹ã³ã¼ãã¯å¤æ°ãåé¢ãã¾ãã
颿°ã¹ã³ã¼ãã夿°ã®åé¢ã«ã©ã®ããã«å½±é¿ãä¸ããããçè§£ãããã¨ã¯ã夿°åã®éè¤ãæå³ããªã夿´ã鲿¢ããããã«é常ã«éè¦ã¨ãªã£ã¦ãã¾ãã
ãã®ãããªååãå®ããã¨ã§ãã³ã¼ãã®ä¿å®æ§ãé«ãããã¨ãã§ãã¾ãã
ã¹ã³ã¼ããã§ã¼ã³
颿°ãå¥ã®é¢æ°å ã«ãã¹ãã§ããããã«ãã¹ã³ã¼ãã¯äºãã«ãã¹ãã§ãã¾ãã
ã¤ã¾ããããã¹ã³ã¼ããå¥ã®ã¹ã³ã¼ãã«ãã¹ããããã¨ã§ãã
const name = 'Taro'; function outerFun() { const name = 'Hanako'; function logName() { console.log(name); } logName(); } outerFun(); // 'Hanako'ã®å¤æ°ã䏿¸ã // local scopeã®ã¿ console.log(name); // 'Taro' global夿°
ä¸è¨ã®name夿°åã¯ã°ãã¼ãã«å¤æ°ã§ãã
outerFun()ã®ã¹ã³ã¼ãå
ã§å宣è¨ãããã¨ãåãååã®å¤æ°ã§æ°ããå¤ãæã¤ãæ°ãããã¼ã«ã«å¤æ°ã使ããã¾ãã
outerFun()ã®ã¹ã³ã¼ãå
ã§ã¯ããã¼ã«ã«å¤æ°åã使ç¨ããã¾ãã
夿°ãåæåããããã³ã«ãèªåã®ã¹ã³ã¼ãã§ãã®å¤æ°ãæ¢ãã¾ãã
ãã¼ã«ã«ã¹ã³ã¼ãã§å¤æ°ãè¦ã¤ãããªããã°ã親ã¹ã³ã¼ãã§æ¤ç´¢ãã¾ãã
親ã¹ã³ã¼ãã§è¦ã¤ãããªããã°ãç¥ç¶æ¯ã¹ã³ã¼ããæ¢ããã°ãã¼ãã«ã¹ã³ã¼ãã«å°éããã¾ã§ç¶ãã¾ãã
親ã¹ã³ã¼ãï¼å¤é¨ã¹ã³ã¼ãï¼ã®å¤æ°ã¯ãåã¹ã³ã¼ãï¼å å´ã¹ã³ã¼ãï¼ã®å é¨ã§ã¢ã¯ã»ã¹ã§ãã¾ããããã®éã¯ã§ãã¾ããã
ã»ã¹ã³ã¼ãã¯ãã¹ãå¯è½
ã»å¤å´ã®ã¹ã³ã¼ãã®å¤æ°ã¯ãå å´ã®ã¹ã³ã¼ãå ã§ã¢ã¯ã»ã¹ã§ãã¾ãã
ã§ã¯ãã¬ãã·ã«ã«ã¹ã³ã¼ãã«ã¤ãã¦èª¬æè´ãã¾ããæ³¨æç¹ããããã¾ãã
颿°ã¹ã³ã¼ãã¨ã¬ãã·ã«ã«ã¹ã³ã¼ãã¯é常ã«ä¼¼ã¦ããæ··åãã¦ãã¾ãå¯è½æ§ãããã¾ãããå¾®å¦ã«ç°ãªãæ¦å¿µã§ãã
ããã念é ã«ç½®ãã¦å¦ç¿ã«é²ãã§ä¸ããã
ã¬ãã·ã«ã«ã¹ã³ã¼ã
JavaScriptã§ã¯ãã¬ãã·ã«ã«ã»ã¹ã³ã¼ã(Lexical Scope)ã¾ãã¯éçã»ã¹ã³ã¼ãã¨å¼ã°ããã¹ã³ã¼ãæ©è½ãå®è£ ãã¦ãã¾ãã
JavaScriptã«ãããã¬ãã·ã«ã«ã¹ã³ã¼ãã¨ã¯ã夿°ã®æå¹ç¯å²ãå®ç¾©ãããæ¹æ³ã®ä¸ã¤ã§ãã³ã¼ãã®è¨è¿°æç¹ã§ã¹ã³ã¼ããæ±ºã¾ããã¨ãæå³ãã¾ãã
ã¤ã¾ããã¬ãã·ã«ã«ã¹ã³ã¼ãã¨ã¯ã夿°ãåå¨ããé åãã夿°ãå®ç¾©ã¾ãã¯ä½æãããå ´æã«ãã£ã¦æ±ºå®ããããã¨ãæå³ãã¦ããã¨ããäºã§ãã
夿°ããããã«å¼ã³åºãããå ´æã§ã¯ãªãã使ãããã¹ã³ã¼ãã§ã®ã¿ä½¿ç¨å¯è½ã§ãã
ç°¡åã«è¨ãã°ãã¬ãã·ã«ã«ã¹ã³ã¼ãã¨ã¯ãå å´ã®ã¹ã³ã¼ãå ã§ãå¤å´ã®ã¹ã³ã¼ãã®å¤æ°ã使ç¨ã§ãããã¨ã§ãã
let myOuterVar = "Hello"; function myFun() { let myInnerVar = "World"; console.log(myOuterVar + " " + myInnerVar); document.write(myOuterVar + " " + myInnerVar) } myFun(); // åºå: "Hello World" console.log(myOuterVar + " " + myInnerVar); // ã¨ã©ã¼: myInnerVar is not defined
See the Pen JavaScript lexical scope by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ä¸è¨ã®ä¾ã§ã¯ãletãã¼ã¯ã¼ãã使ç¨ãã¦myInnerVarã宣è¨ããmyFun颿°å
ã§ä½¿ç¨ãã¦ãã¾ãã
ããã«ãããmyInnerVarã¯myFunå
ã®ãããã¯ã¹ã³ã¼ãå
ã§ã®ã¿æå¹ã«ãªãã¾ãã
颿°ã®å¤å´ã§myInnerVar夿°ã使ç¨ãããã¨ããã¨ãåæ§ã«"myInnerVar is not defined"ã¨ããã¨ã©ã¼ãçºçãã¾ãã
ããã§ãã¬ãã·ã«ã«ã¹ã³ã¼ãã¯å¤æ°ã®ã¹ã³ã¼ããæ±ºå®ããä»çµã¿ã ã¨ããäºãçè§£ã§ãããã¨æãã¾ãã
ã¤ã¾ããã¬ãã·ã«ã«ã¹ã³ã¼ãã¨ã¯é¢æ°ãã©ãã«å®£è¨ããããã«åºã¥ãã¦ããã®é¢æ°ãåç §ã§ãã夿°ã®ç¯å²ã決ã¾ãã¾ãã
颿°ã¹ã³ã¼ãã§ã¯ã颿°å ã§å®ç¾©ããã夿°ããã®é¢æ°å ã§ã®ã¿ã¢ã¯ã»ã¹å¯è½ã§ãããã¨ãæãã¾ãã
颿°ã®å¤é¨ã§ãåãååã®å¤æ°ãå®ç¾©ãã¦ãã颿°å ã§ã®å¤æ°ã¨ã¯å¥ã®å¤æ°ã¨ãã¦æ±ããã¾ãã
ããã®éãã¨ãªãã¾ãã
letãã¼ã¯ã¼ãã使ç¨ããã¨ã夿°ã®ã¹ã³ã¼ããããç´°ããå¶å¾¡ã§ãã¾ãã
ãããã¯ã¹ã³ã¼ãã®å¤æ°ã使ç¨ãããã¨ã§ãã³ã¼ãã®èªã¿ããããåä¸ããããã¨ãã§ãã¾ãã
JSã®ã¯ãã¼ã¸ã£ã¼ã¨ã¯ï¼
JavaScriptã«ãããã¯ãã¼ã¸ã£ã¼(Closure)ã¨ééã¯ãå®éã«ã¯åãæ¦å¿µãæãã¦ãã¾ãã
ã¯ãã¼ã¸ã£ã¼ã¯ãå¤é¨ã¹ã³ã¼ãã«ãã夿°ã«ã¢ã¯ã»ã¹ã§ããããã«ãããã¨ã§ããã®å¤æ°ãä¿è·ããæ©è½ãæä¾ãããã¨ãã§ãã¾ãã
ãã®ç¶æ ããéããããç¶æ ãã¨è¡¨ç¾ãã¾ãã
ãã®ããï¼ééï¼ã¾ãã¯ï¼ã¯ãã¼ã¸ã£ã¼ï¼ã¨å¼ã°ãã¾ãã
ãããã£ã¦ãã¯ãã¼ã¸ã£ã¼ã¨ééã¯åããã®ãæããã©ã¡ããJavaScriptã«ããã¦ãå¤é¨ã¹ã³ã¼ãã«ãã夿°ãå é¨ã¹ã³ã¼ãã§ä¿è·ããããã«ä½¿ç¨ããã¾ãã
ã¯ãã¼ã¸ã£ã¼ã¯ãã¬ãã·ã«ã«ã¹ã³ã¼ãã®å¤ã§å®è¡ãããå ´åã§ãããã®ã¬ãã·ã«ã«ã¹ã³ã¼ãã«ã¢ã¯ã»ã¹ãã颿°ã¨ãªãã¾ãã
ã¤ã¾ããå¤å´ã®é¢æ°ãå®è¡ãçµäºãã¦ãããã®å å´ã®é¢æ°ã夿°ã颿°ãåç §ãç¶ãããããå¤å´ã®é¢æ°å ã§å®ç¾©ããã夿°ã颿°ãä¿æãããç¶æ ãç¶æãã¾ãã
ãã®æ©è½ã«ããã夿°ã颿°ãå¤é¨ããä¿è·ãããããã©ã¤ãã¼ã夿°ãå®ç¾©ããããããã¨ãå¯è½ã¨ãªãã¾ãã
éè¦ãªäºã¯ãå®è¡ãããå ´æã«é¢ä¿ãªãå¤é¨é¢æ°ã®å®è¡å¾ã§ãå¯è½ã¨ãªãã¾ãã
function createCounter() { let counter = 0; function increment() { counter = counter + 1; console.log(counter); } return increment; } const updateClickCounter = createCounter(); updateClickCounter(); // 1
See the Pen JavaScript ã¯ãã¼ã¸ã£ã¼ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ä¸è¨ã®ããã«ãã¯ãã¼ã¸ã£ã¼ã¨ã¯ã颿°ã常ã«ãã®å¨å²ã«ã¢ã¯ã»ã¹ã§ããã¨ããäºã§ãã
å¤å´ã®é¢æ°ãå¼ã³åºãã¨ãcounter夿°ãï¼0ï¼ã«è¨å®ããã¾ãã
ãããã£ã¦ãå¤å´ã®é¢æ°ãå¼ã³åºãããå¾ã¯ãcounter夿°ã使ç¨ã§ããªãã¨äºæ³ãããå ´åãããã¾ãã
ãããã夿°ã¯å¤å´ã®é¢æ°ã®ã¹ã³ã¼ãå ã«ããã¾ãã
ã¹ã³ã¼ãã¯ãã¹ãã§ãããããå
é¨é¢æ°ã¯å¼ãç¶ã counter夿°ã«ã¢ã¯ã»ã¹ã§ãã¾ãã
ã³ã¼ãã®ä¸é¨ãå
é¨é¢æ°ãå¼ã³åºããã¨ãã§ããéãã夿°ã®counterãè¨æ¶ãããã¨ãã§ãã¾ãã
ã¯ãã¼ã¸ã£ã«ããã颿°ã¯ãã®ã¹ã³ã¼ãå ã®å¤æ°ãè¨æ¶ã§ããã¹ã³ã¼ãã使ç¨ããã¨é¢æ°ã¨ãã®å¤é¨ã«ã¢ã¯ã»ã¹ã§ãããã¼ã¿ãçµã¿åããããã¨ãã§ãã¾ãã
ããå°ããç°¡åã«èª¬æè´ãã¾ãããã
åè¿°ããéããã¯ãã¼ã¸ã£ã¼ã¨ã¯ã颿°ãå¤å´ã®ã¹ã³ã¼ãã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ãããã¨ã§ãã
颿°ã®ä¸ã«é¢æ°ã使ãã¦ã¿ã¾ãããã
outer()颿°ãinner()颿°ãè¿ãã¦ãã¾ãã
outer()颿°ãå¼ã³åºãããã®çµæã宿°ã«ä»£å
¥ããã®ã¡ã«ã宿°ã«æ ¼ç´ããã¦ãã颿°ãå¼ã³åºãã¾ãããã
function outer() { //å¤å´ const a = "Hello "; function inner() { //å å´ const b = "World!!"; console.log(a + b); } return inner; } const Greetings = outer(); Greetings(); // Hello World!!
See the Pen JavaScript ã¯ãã¼ã¸ã£ã¼ â¡ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ä¸è¨ã§ç¢ºèªãã¦ã¿ãã¨ã宿°ã®ï¼aï¼ãinner()颿°ã®å¤å´ã§å®ç¾©ããã¦ãããã¨ããããã¾ãã
outer()颿°å¼ã³åºããçµäºããã¨ã宿°ï¼a ï¼ã®çè·¡ã¯ãªããªãã¾ãã
ããã¯ãGreetings()ãå¼ã³åºãã¨ãï¼bï¼ã®ã¿ãå®ç¾©ããã¦ããã¨ãã«ï¼a + bï¼ããã°ã«è¨é²ãããã¨ãã¦ãããããã¨ã©ã¼ã表示ãããã¨æ³å®ããã¾ãã
宿°ï¼a ï¼ãinner()颿°ã®å¤ã§æå®ããã¦ãã¾ãã
ããããã覧ã®ã¨ãããGreetings()ã¯æããã«ï¼aï¼ã¨ï¼bï¼ã®ä¸¡æ¹ã«ã¢ã¯ã»ã¹å¯è½ã¨ãªã£ã¦ãã¾ãã
ä»ã®ä¾ã§ãè¦ã¦ã¿ã¾ãããã
function outerFunc() { let outerVar = 'I am outside!'; function innerFunc() { console.log(outerVar); // => logs "I am outside!" } innerFunc(); } outerFunc();
innerFunc()ã¹ã³ã¼ãå
ã§ã¯ãã¬ãã·ã«ã«ã¹ã³ã¼ãããouterVar夿°ã«ã¢ã¯ã»ã¹ããã¾ãã
innerFunc()ã®å¼ã³åºãã¯ããã®ã¬ãã·ã«ã«ã¹ã³ã¼ãï¼outerFunc()ã®ã¹ã³ã¼ãï¼å
ã§è¡ããããã¨ã«æ³¨æãã¦ãã ããã
innerFunc()ãããã®ã¬ãã·ã«ã«ã®ç¯å²å¤ã®é¢æ°exec()ã§å¼ã³åºãã¨ãããã³ã¼ã夿´ããã¦ã¿ã¾ãããã
ãã®å ´åã§ãinnerFunc()ã¯outerVarã«ã¢ã¯ã»ã¹ã§ããã®ã§ããããï¼
function outerFunc() { let outerVar = 'I am outside!'; function innerFunc() { console.log(outerVar); // => logs "I am outside!" } return innerFunc; } function exec() { const myInnerFunc = outerFunc(); myInnerFunc(); } exec();
ä¸è¨ã®ããã«ãinnerFunc()ã¯ããã®ã¬ãã·ã«ã«ã»ã¹ã³ã¼ãã®å¤ã§ãexec()颿°ã®ã¹ã³ã¼ãå
ã§å®è¡ããã¾ãã
ããã¦ãéè¦ãªäºã¯ãinnerFunc()ã¯ãã¬ãã·ã«ã«ã¹ã³ã¼ãå¤ã§å®è¡ããã¦ãããã®ã¬ãã·ã«ã«ã¹ã³ã¼ãããouterVarã«ã¢ã¯ã»ã¹ãããã¨ãã§ãã¾ãã
è¨ãæããã° ãinnerFunc()ã¯ãouterVar夿°ãã¬ãã·ã«ã«ã»ã¹ã³ã¼ãããéãããããããã¯ã¯ãã¼ã¸ã£ã¼ã§ãã
ã¯ãã¼ã¸ã£ã¼ã¯ãå é¨é¢æ°ãå¨å²ã®ã³ã¼ããããã¯ããªããªã£ãå¾ã§ãããã®å¨å²ã®ã³ã¼ããããã¯å ã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ãããã¨ãæå³ãã¦ããäºãçè§£ã§ãããã¨æãã¾ãã
ãã©ã¤ãã¼ã夿°
ã¯ãã¼ã¸ã£ã¼ã®åªãã¦ããç¹ããã¢ã¸ã¥ã¼ã«ã®ã«ãã»ã«åãå®è£ ããæ©è½ã§ãã
ã¹ã¿ãã¯ã®ãã¼ã¿æ§é ãå®è£ ããã¿ã¹ã¯ãããã¨ãã¾ãã
æ¬æ¥ã§ããã°ãã¢ã¤ãã ãã¹ã¿ãã¯ã«push(ããã·ã¥)ã¾ãã¯pop(ããã)ãããã¨ããã§ãã¾ããã
é常ã®JavaScripté
åã¯ãarray.push()ã¡ã½ããã¨array.pop()ã¡ã½ããã®ä¸¡æ¹ãæä¾ãã¦ãã¾ãã
æ°ããè¦ç´ ãã¹ã¿ãã¯ã®ä¸çªä¸ã«pushãã¦ãããpopãã¦ã¹ã¿ãã¯ã«æ¿å ¥ãããè¦ç´ ãåé¤ã§ãã¾ãã
ããã¯ä¸è¬çãªãã¼ã¿æ§é ã®ï¼ã¤ã§ããStuckã§ãã
以ä¸ã®ä¾ãã確èªä¸ããã
function Stack() { const items = [] return items; } const stack = Stack(); stack.push(3) stack.push(2) stack.push(1) console.log(stack.pop()); // 1 stack.length = 0; // stackãåé¤ console.log(stack.pop()); // undefined
ä¸è¨ã¯åé¡ããããã¾ãã
ããã¯ãé
åãªãã¸ã§ã¯ãå
¨ä½ãã¨ã¯ã¹ãã¼ãããããããstack.length = 0ã使ç¨ãã¦ã¹ã¿ãã¯ãæ¶å»ããããã¹ã¿ãã¯ä¸ã§é常許å¯ãããªãæä½ãç°¡åã«è¡ããã¨ãã§ãã¦ãã¾ãã¾ãã
ã¤ã¾ããpopã§ã¯ãªãï¼.length = 0ï¼ã§ãåé¤ã許å¯ããã¾ãã
ãããé¿ããããã«ãä¸è¨ã®ã¹ã¿ãã¯ã®å®è£ ãã«ãã»ã«åãã pushãpopã®æä½ããã§ããªãããã«ããäºãå¯è½ã§ãã
ããããã¯ãã¼ã¸ã£ã¼ãå½¹ã«ç«ã¤æã¨ãªãã¾ãã
function Stack() { const items = []; return { push(item) { items.push(item); }, pop() { return items.pop(); } } } const stack = Stack(); // ã¹ã¿ãã¯ã®ã¤ã³ã¹ã¿ã³ã¹ã使 stack.push(3); // ã¹ã¿ãã¯ã«è¦ç´ 3 ã追å stack.push(2); // ã¹ã¿ãã¯ã«è¦ç´ 2 ã追å stack.push(1); // ã¹ã¿ãã¯ã«è¦ç´ 1 ã追å console.log(stack.pop()); // ã¹ã¿ãã¯ããè¦ç´ ãåãåºããçµæã表示 (åºå: 1) stack.length = 0; // ã¹ã¿ãã¯ã®é·ãã 0 ã«è¨å® (ã¹ã¿ãã¯ã®å 容ã¯å½±é¿ãåãã¾ãã) console.log(stack.pop()); // ã¹ã¿ãã¯ããè¦ç´ ãåãåºããçµæã表示 (åºå: 2)
ä¸è¨ã®ããã«ãpush()ã¨pop()ã¡ã½ããã¯ãitemsé åã«ã¢ã¯ã»ã¹ããã¯ãã¼ã¸ã£ã¨ãã¦æ©è½ãã¦ãã¾ãã
items夿°ã¯ãStack()颿°ã®ãã¼ã«ã«ã¹ã³ã¼ãå ã§å®ç¾©ããã¦ãããããå¤é¨ããç´æ¥ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ããã
ããã«ãããitems夿°ã¯private夿°ã¨ãªãã¾ãã
push()ã¡ã½ããã¯ãå¤é¨ããæ¸¡ãããè¦ç´ ãitemsé åã«è¿½å ãã¾ããpop()ã¡ã½ããã¯ãitemsé åã®æå¾ã®è¦ç´ ãåãåºãã¦è¿ãã¾ãã
ãã®ããã«ãitemsé åã«å¯¾ãã夿´ãã¢ã¯ã»ã¹ã¯ãStack()颿°å ã§å®ç¾©ãããpush()ã¨pop()ã¡ã½ãããä»ãã¦è¡ããã¾ãã
console.log(stack.pop()) ã«ãã£ã¦ãã¹ã¿ãã¯ããè¦ç´ ãåãåºãããçµæã表示ããã¾ãããã®å ´åãã¹ã¿ãã¯ã®æå¾ã®è¦ç´ ã§ãã1ãåãåºãããããã1ãåºåããã¾ãã
ï¼stack.length = 0ï¼ã«ãã£ã¦ãã¹ã¿ãã¯ã®é·ãã0ã«è¨å®ããã¾ãããã¹ã¿ãã¯ã®å 容èªä½ã¯å½±é¿ãåãã¾ããã
ãããã£ã¦ã次ã®console.log(stack.pop())ã§ã¯ãã¹ã¿ãã¯ã¯ç©ºã®ç¶æ ã§ãã®ã§ãä½ãåãåºããã¨ãã§ãããundefinedãåºåããã¾ãã
ããã«ãããã¹ã¿ãã¯ã®å é¨ã®ãã¼ã¿ãä¿è·ããå¤é¨ããã®ä¸æ£ãªæä½ãé²ããã¨ãã§ãã¾ãã
ãã®ã¢ããã¼ãã¯ãã©ã¤ãã¼ã夿°ã«ãããã«ãã»ã«åãå®ç¾ããããã«ã¯ãã¼ã¸ã£ã使ç¨ã§ããç´ æ´ãããä¾ã¨ãªã£ã¦ãã¾ãã
ãã©ã¤ãã¼ãã¡ã½ãã
JavaScriptã§ã¯ãJavaãC++ãªã©ã®ä»ã®è¨èªã®ããã«ãããã«ä½¿ç¨ã§ãããã©ã¤ãã¼ãã¡ã½ããã使ããæ¹æ³ã¯ããã¾ããã
ããããå±ããã¯ã©ã¹ã§ãããå¤é¨ããç´æ¥ã¢ã¯ã»ã¹ããã³å¤æ´ãããã¨ã¯ã§ãã¾ããã
ããããã¯ãã¼ã¸ã£ã¼ã使ç¨ãã¦ãã©ã¤ãã¼ã夿°ã¨ã»ãã¿ã¼ããã³ã²ãã¿ã¼é¢æ°ã使ç¨ãã¦åºæ¬çãªãã¡ã¯ããªé¢æ°ã使ã§ãã¾ãã
ä¸è¨ã¯ãã¯ã©ã¹ãã³ã³ã¹ãã©ã¯ã¿ã¼ã¨ã¯ç°ãªãç¹ã«æ³¨æãã¦ä¸ããã
ãªãã¸ã§ã¯ããè¿ã颿°ã«ããã¾ããã
function Private(name, job) { let _name = name; // "Private"夿° // 夿°ã®å ¬é return { // Getter ã¡ã½ãã getName() { return _name; }, // Setter ã¡ã½ãã setName(newName) { _name = newName; } } } const myName = Private("deve.K") console.log(myName.getName()) // deve.K console.log(myName._name) // undefined maName.setName("Taro") console.log(myName.getName()) // Taro
ãã©ã¤ãã¼ã夿°ã®åã«_ ãä»ããã®ã¯è¯ãç¿æ
£ã§ããã²ãã¿ã¼é¢æ°ã®getNameãã»ãã¿ã¼é¢æ°ã®setNameãæã¤ã·ã³ãã«ãª Factory Function Privateã使ãã¦ãã¾ãã
nameã«ç´æ¥ã¢ã¯ã»ã¹ãããã¨ããã¨ã颿°ã¹ã³ã¼ãå
ã«ãããããããã¯å¤é¨ããã¢ã¯ã»ã¹ã§ããã«undefinedãè¿ããã¾ãã
ããã§ãã¯ãã¼ã¸ã£ã¼ã使ãã°ããã©ã¤ãã¼ã夿°ãå®è¡ããããã¨ãã§ãã¾ãã
JavaScriptã®ã¯ãã¼ã¸ã£ã¼ã使ç¨ãããã¨ã§ããªãã¸ã§ã¯ãæåããã°ã©ãã³ã°ã®æ¦å¿µã§ãããã«ãã»ã«åã¨ç¸æ§ãè¯ããã³ã¼ãã®ä¿å®æ§ãåå©ç¨æ§ãåä¸ããããã¨ãã§ãã¾ãã
ããã§ã¯ãã¯ãã¼ã¸ã£ã¼ã使ç¨ãã¦ããã¿ã³ãã¯ãªãã¯ããåæ°ãã«ã¦ã³ãããä¾ãè¦ã¦ããã¾ãããã
ã¯ãã¼ã¸ã£ã¼ã使ç¨ãã¦ãã¤ãã³ããã³ãã©ã¼å ã§å¤æ°ãä¿æãããã®å¤ãæ´æ°ãããã¨ãå¯è½ã§ãã
<button type="button" id="myButton">Click me</button><br /> <span id="myText">You clicked 0 times</span>
function addClickHandler() { let count = 0; const button = document.getElementById('myButton'); const myText = document.getElementById("myText"); button.addEventListener('click', function() { count++; console.log(`Button clicked ${count} times.`); myText.innerText = `You clicked ${count} times.`; }); } addClickHandler();
See the Pen JavaScript closure Event handler by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
ãã°ã¨ãã©ã¦ã¶ä¸ã両æ¹ã§ç¢ºèªã§ããããã«ãªã£ã¦ããã¾ãã
addClickHandler()颿°å ã§count夿°ãå®ç¾©ãããã®å¾ãã¤ãã³ããã³ãã©ã¼å ã§ä½¿ç¨ãã¦ãã¾ãã
count夿°ã¯ãã¯ãã¼ã¸ã£ã¼å
ã§å®ç¾©ããã¦ãããããã¤ãã³ããã³ãã©ã¼ãå®è¡ããããã³ã«ããã®å¤ãä¿æãã¦ãã¾ãã
ã¾ããletãã¼ã¯ã¼ãã使ç¨ãã¦ãããããcount夿°ã¯ãããã¯ã¹ã³ã¼ããæã¡ã¾ãã
ã¤ã¾ããaddClickHandler()颿°ã®å¤é¨ããã¯ã¢ã¯ã»ã¹ã§ãã¾ããã
ãã®ããã«ãã¯ãã¼ã¸ã£ã¼ã使ç¨ãããã¨ã§ãã¤ãã³ããã³ãã©ã¼å ã§å¤æ°ãä¿æãããã®å¤ãæ´æ°ãããã¨ãã§ãã¾ãã
ä¸è¨ã®å ´åã§ãããã¿ã³ãã¯ãªãã¯ãããã¨ãDOMã³ã¼ãã®ä¸ã®ã©ããã§handleClick()颿°ãå®è¡ããã¾ãã
const button = document.getElementById('myButton'); const myText = document.getElementById("myText"); let count = 0; button.addEventListener('click', function handleClick() { count++; console.log(`Button clicked ${count} times.`); myText.innerText = `You clicked ${count} times.`; });
See the Pen JavaScript closure Event handler â¡ by dev.K | Webã¢ããªéçºè (@enjinia_f) on CodePen.
å®ç¾©ããå ´æããé ãé¢ããå ´æã§å®è¡ããã¦ãã¾ãã
ããããã¯ãã¼ã¸ã£ã¼ã§ããhandleClick()ã¯ãã¬ãã·ã«ã«ã¹ã³ã¼ãããcountãè¨æ¶ããã¯ãªãã¯ãçºçããã¨ãããæ´æ°ãã¾ãã
ããã«è¨ãã°ãmyTextãè¨æ¶ããã¾ãã
ã¬ãã·ã«ã«ã¹ã³ã¼ãã¨ã¯ãã¼ã¸ã£ã¼ã®éã
ã¬ãã·ã«ã«ã¹ã³ã¼ãã¨ã¯ãã¼ã¸ã£ã¼ã®æç¢ºãªéããæ´çãã¨ãã¾ãããã
JavaScriptã®ã¯ãã¼ã¸ã£ã¼ã¨ã¬ãã·ã«ã«ã¹ã³ã¼ãã¯å¯æ¥ã«é¢é£ãã¦ããã¾ãããç°ãªãæ¦å¿µã§ãã
ã¬ãã·ã«ã«ã¹ã³ã¼ãã¯ãã³ã¼ãã®éçãªæ§é ã«åºã¥ãã¦ãã©ã®å¤æ°ãã©ã®ã¹ã³ã¼ãã«å±ããããæ±ºå®ããä»çµã¿ã§ãã
ã¤ã¾ãã颿°ãã©ãã«å®£è¨ããããã«åºã¥ãã¦ããã®é¢æ°ãåç §ã§ãã夿°ã®ç¯å²ã決ã¾ãã¾ãã
ãã®ä»çµã¿ã«ãã£ã¦ã夿°ã®ååãè¡çªãããã¨ãé¿ãããã颿°ã®å®è¡ä¸ã«æ£ãã夿°ãåç §ãããã¨ãã§ãã¾ãã
䏿¹ãã¯ãã¼ã¸ã£ã¼ã¯ã颿°ãå®è¡ãããç°å¢ï¼ã¹ã³ã¼ãï¼ãè¨æ¶ãã¦ããã®ç°å¢ã«ãã夿°ãåç §ã§ããããã«ããä»çµã¿ã§ãã
ã¯ãã¼ã¸ã£ã¼ã使ããã¨ã§ã颿°ãå¤é¨ã®ã¹ã³ã¼ãã«ãã夿°ãåç §ãããã夿´ãããã§ãã¾ãã
ããã«ããã颿°ãå®è¡ããããã³ã«æ°ããç°å¢ã使ãããã¨ãã§ãã¾ãã
ã¤ã¾ããã¬ãã·ã«ã«ã¹ã³ã¼ãã¯å¤æ°ã®ã¹ã³ã¼ããæ±ºå®ããä»çµã¿ã§ãããã¯ãã¼ã¸ã£ã¼ã¯é¢æ°ãå¤é¨ã®ã¹ã³ã¼ãã«ãã夿°ãåç §ã§ããããã«ããä»çµã¿ã§ãã
ã§ãããã¯ãã¼ã¸ã£ã¼ã¯ã¬ãã·ã«ã«ã¹ã³ã¼ãã«ä¾åãã¦ããããã両è ã¯ããªã坿¥ã«é¢é£ãã¦ãããã¨ã«æ³¨æãã¦ãã ããã
ã¯ãã¼ã¸ã£ã¼ã®çè§£ãåãã£ãæã§ãJavaScriptã§ã®ã¯ãã¼ã¸ã£ã¼ã®å©ç¹ã¯ä½ã§ããããï¼
JSã§ã®ã¯ãã¼ã¸ã£ã®å©ç¹ã¨æ¬ ç¹
ã¯ãã¼ã¸ã£ã¼ã«ã¯ãJavaScriptããã°ã©ãã³ã°ã«ããã¦ããã¤ãã®å©ç¹ãããã¾ãã
ãã®ä¸»ãªå©ç¹ã®1ã¤ã¯ããã©ã¤ãã¼ã夿°ã¨ãã¼ã¿ã®ã«ãã»ã«åã使ã§ãããã¨ã§ãã
ããã¯ãã¯ãã¼ã¸ã£ã¼å ã®å¤æ°ã¨é¢æ°ãã¯ãã¼ã¸ã£ã¼ã®å¤é¨ããã¢ã¯ã»ã¹ã§ããªããã¨ãæå³ããããã°ã©ã ã®ä»ã®é¨åã«ãã£ã¦å¤æ´ã¾ãã¯ã¢ã¯ã»ã¹ãããã®ãé²ãã¾ãã
ã¯ãã¼ã¸ã£ã¼ã®ãã1ã¤ã®å©ç¹ã¯ãã³ã¼ãã®éè¤ãæ¸ãããåå©ç¨å¯è½ãªã³ã¼ãã使ããããã«ä½¿ç¨ã§ãããã¨ã§ãã
ã¯ãã¼ã¸ã£ã¼å ã«æ©è½ãã«ãã»ã«åãããã¨ã§ãè¤æ°ã®å ´æã§ã³ã¼ããç¹°ãè¿ããã¨ãé¿ããããã¢ã¸ã¥ã¼ã«åãããä¿å®ããããã³ã¼ãã使ã§ãã¾ãã
ããã¦ãã¡ã¢ãªå¹çã®åä¸ã«ããªãã¾ãã
ã¯ãã¼ã¸ã£ã¼ã¯ã颿°ã®å¤é¨ãã夿°ã«ã¢ã¯ã»ã¹ããããã«ã夿°ãã°ãã¼ãã«ã¹ã³ã¼ãã«å®ç¾©ããå¿ è¦ãããã¾ããã
ãã®ããã颿°å ã§å¿ è¦ãªå¤æ°ã ããå®ç¾©ãããã¨ãã§ããã¡ã¢ãªå¹çãåä¸ãããã¨ãããã¾ãã
ãã ããã¯ãã¼ã¸ã£ã¼ã«ã¯ããã¤ãã®æ¬ ç¹ãããã¾ãã
ä¸»ãªæ¬ ç¹ã®1ã¤ã¯ããããã°ã®è¤éãã§ãã
ã¯ãã¼ã¸ã£ã¼ã¯ã¹ã³ã¼ãå¤ã®å¤æ°ã«ã¢ã¯ã»ã¹ã§ãããããã³ã¼ãå ã®ãã°ãã¨ã©ã¼ã追跡ããã®ãé£ããå ´åãããã¾ãã
ã¯ãã¼ã¸ã£ã¼ããããã°ããããã®ãã³ãã¯ãconsole.logã®ä½¿ç¨ã¨ããããã¬ã¼ã使ç¨ããã³ã¼ãã®ã¹ãããå®è¡ãå«ã¾ãã¾ãã
ã¾ãããã°ãã¨ã©ã¼ã®ãªã¹ã¯ãæå°éã«æããããã«ãã¯ãã¼ã¸ã£ã¼ãã§ããã ãã·ã³ãã«ã§ç¦ç¹ãçµã£ããã®ã«ãããã¨ãéè¦ã§ãã
ã¯ãã¼ã¸ã£ã¼ã誤ç¨ããã¨ãäºæããªãåé¡ãçºçãããã¨ãããã¾ãã
ãã®ãããã¯ãã¼ã¸ã£ã¼ãæ£ããçè§£ããé©åã«ä½¿ç¨ãããã¨ãéè¦ã¨ãªãã¾ãã
æå¾ã«
JavaScriptããã°ã©ãã³ã°ã§ã¯ãã¼ã¸ã£ã¼ã使ç¨ããå ´åã¯ãããã¤ãã®ãã¹ããã©ã¯ãã£ã¹ã«å¾ã£ã¦ãã³ã¼ããä¿å®ããããçè§£ãããããã®ã«ãããã¨ãéè¦ã§ãã
ãã¹ããã©ã¯ãã£ã¹ã®1ã¤ã¯ãã¯ãã¼ã¸ã£ã¼ãã§ããã ãå°ããããç¦ç¹ãçµããã¨ã§ãã
ããã¯ãã¯ãã¼ã¸ã£ã¼å ã«æ©è½ãè©°ãè¾¼ã¿ãããªãããã«ãããã®ä»£ããã¨ãã¦ãããå°ãããããç¦ç¹ãçµã£ãã¯ãã¼ã¸ã£ã¼ã«åå²ããå¿ è¦ãããã¾ãã
ãã1ã¤ã®ãã¹ããã©ã¯ãã£ã¹ã¯ãã¯ãã¼ã¸ã£ã¼ã®å¤é¨ã§å¤æ°ã夿´ããªãããã«ãããã¨ã§ãã
ããã«ãã£ã¦ãã³ã¼ãã§äºæããªãåä½ããã°ãçºçããå¯è½æ§ãããã¾ãã
ã§ãã®ã§ã夿°ããã©ã¡ã¼ã¿ã¼ã¨ãã¦ã¯ãã¼ã¸ã£ã¼ã«æ¸¡ããå¿ è¦ã«å¿ãã¦ã¯ãã¼ã¸ã£ã¼ããå¤ãè¿ãã¾ãã
ã¯ãã¼ã¸ã£ã¼ã使ç¨ããããã®ãã¹ããã©ã¯ãã£ã¹ã«ã¯ããã©ã¤ãã¼ã夿°ãã«ãã»ã«åãããã³ã³ã¼ãã®åå©ç¨æ§ã®ããã«ã¯ãã¼ã¸ã£ã¼ã使ç¨ãããã¨ãå«ã¾ãã¾ãã
ä¸å¿ è¦ãªã¯ãã¼ã¸ã£ã¼ã使ããªãããã«ããã¡ã¢ãªä½¿ç¨éãé©åã«ç®¡çãããã¨ãéè¦ã§ãã
ã¯ãã¼ã¸ã£ã¼ã¯ãé«åº¦ãªJavaScriptããã°ã©ãã³ã°ãè¡ãéã«çè§£ããå¿ è¦ã®ããæ¦å¿µã§ãã
ãããããã¹ããã©ã¯ãã£ã¹ã«å¾ããã¯ãã¼ã¸ã£ã¼ãæ éã«è¨ç»ãããã¨ã§ãJavaScriptã®å¼·åãªæ©è½ãæå¤§éã«æ´»ç¨ã§ããããã«ãªãã¯ãã§ãã
æ¬æ¥ã¯ä»¥ä¸ã¨ãªãã¾ãã
æå¾ã¾ã§è¨äºãèªãã§é ããããã¨ããããã¾ãã
ãã®è¨äºãæ°ã«å ¥ã£ããããã¯ãã¼ã¯ããä»ã®æ¹ã«ãå ±æãã¦ãã ããã