JavaScriptã«ãããæååãã¿ãŒã³ãããã³ã°ã®ããã©ãŒãã³ã¹ãžã®åœ±é¿ãæ¢ããŸããæ£èŠè¡šçŸãæååã¡ãœããããããŠå¹ççãªæåååŠçã®ããã®æé©åæè¡ã«ã€ããŠè§£èª¬ããŸãã
JavaScriptã®æååãã¿ãŒã³ãããã³ã°ã«ãããããã©ãŒãã³ã¹ãžã®åœ±é¿ïŒæååãã¿ãŒã³åŠçã®ãªãŒããŒããã
æååã®ãã¿ãŒã³ãããã³ã°ã¯JavaScriptã«ãããåºæ¬çãªæäœã§ãããããŒã¿æ€èšŒãããã¹ãè§£æãæ€çŽ¢æ©èœãªã©ã®ã¿ã¹ã¯ã§åºã䜿çšãããŠããŸãããããããããã®æäœã®ããã©ãŒãã³ã¹ã¯ãéžæããã¡ãœãããé¢äžãããã¿ãŒã³ã®è€éãã«ãã£ãŠå€§ããç°ãªãå¯èœæ§ããããŸãããã®èšäºã§ã¯ãJavaScriptã«ãããããŸããŸãªæååãã¿ãŒã³ãããã³ã°æè¡ãããã©ãŒãã³ã¹ã«äžãã圱é¿ãæãäžããæåååŠçãæé©åããããã®æŽå¯ãšãã¹ããã©ã¯ãã£ã¹ãæäŸããŸãã
JavaScriptã«ãããæååãã¿ãŒã³ãããã³ã°ã®çè§£
JavaScriptã¯ãæååã«å¯ŸããŠãã¿ãŒã³ãããã³ã°ãå®è¡ããããã®ããã€ãã®æ¹æ³ãæäŸããŠããŸããæãäžè¬çãªã¡ãœããã«ã¯ã以äžã®ãããªãã®ããããŸãã
- æ£èŠè¡šçŸ (RegEx): ç¹å®ã®æ§æã䜿çšããŠãã¿ãŒã³ãå®çŸ©ããããã®åŒ·åã§æè»ãªæ¹æ³ã§ãã
- æååã¡ãœãã:
indexOf()ãincludes()ãstartsWith()ãendsWith()ãsearch()ã®ãããªçµã¿èŸŒã¿ã®æååã¡ãœããã§ãã
åã¢ãããŒãã«ã¯ã衚çŸåãšããã©ãŒãã³ã¹ã®ç¹ã§ããããé·æãšçæããããŸãããããã®ãã¬ãŒããªããçè§£ããããšã¯ãå¹ççãªJavaScriptã³ãŒããæžãäžã§éåžžã«éèŠã§ãã
æ£èŠè¡šçŸ (RegEx)
æ£èŠè¡šçŸã¯ãè€éãªãã¿ãŒã³ãããã³ã°ã®ããã®å€æ©èœãªããŒã«ã§ããç¹æ®æåãã¡ã¿æåã䜿çšããŠãè€éãªãã¿ãŒã³ãå®çŸ©ããããšãã§ããŸããããããæ£èŠè¡šçŸã®ã³ã³ãã€ã«ãšå®è¡ã¯ãç¹ã«è€éãªãã¿ãŒã³ãç¹°ãè¿ãã®ãããã³ã°æäœã®å Žåãèšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸãã
æ£èŠè¡šçŸã®ã³ã³ãã€ã«
æ£èŠè¡šçŸãäœæãããšãJavaScriptãšã³ãžã³ã¯ãããå éšè¡šçŸã«ã³ã³ãã€ã«ããå¿ èŠããããŸãããã®ã³ã³ãã€ã«ããã»ã¹ã«ã¯æéãããããŸããåãæ£èŠè¡šçŸãè€æ°å䜿çšããå Žåã¯ãäžåºŠã³ã³ãã€ã«ããŠåå©çšããæ¹ãäžè¬çã«å¹ççã§ãã
äŸ:
// Inefficient: Compiling the regex on each iteration
for (let i = 0; i < 1000; i++) {
const str = "example string";
const regex = new RegExp("ex"); // Creates a new regex object each time
regex.test(str);
}
// Efficient: Compiling the regex once and reusing it
const regex = new RegExp("ex");
for (let i = 0; i < 1000; i++) {
const str = "example string";
regex.test(str);
}
æ£èŠè¡šçŸã®è€éã
æ£èŠè¡šçŸã®è€éãã¯ããã®ããã©ãŒãã³ã¹ã«çŽæ¥åœ±é¿ããŸããå€ãã®éžæè¢ãéæå®åãå èªã¿ã»åŸèªã¿ãæã€è€éãªãã¿ãŒã³ã¯ãããåçŽãªãã¿ãŒã³ãããå®è¡ã«èããé·ãæéããããããšããããŸããå¯èœãªéãæ£èŠè¡šçŸãåçŽåããããšãæ€èšããŠãã ããã
äŸ:
// Potentially inefficient: Complex regex with multiple alternations
const complexRegex = /^(a|b|c|d|e|f)+$/;
// More efficient: Simpler regex using a character class
const simplerRegex = /^[a-f]+$/;
æ£èŠè¡šçŸã®ã°ããŒãã«ãã©ã° (g)
æ£èŠè¡šçŸã® g ãã©ã°ã¯ã°ããŒãã«æ€çŽ¢ã瀺ãããšã³ãžã³ãæååå
ã®æåã®äžèŽã ãã§ãªãããã¹ãŠã®äžèŽãèŠã€ããããšãæå³ããŸããg ãã©ã°ã¯äŸ¿å©ã§ãããç¹ã«å€§ããªæååã®å Žåããšã³ãžã³ãæååå
šäœãå埩åŠçããå¿
èŠããããããããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãã
æ£èŠè¡šçŸã®ããã¯ãã©ããã³ã°
ããã¯ãã©ããã³ã°ã¯ãæ£èŠè¡šçŸãšã³ãžã³ãæååå ã§ããŸããŸãªãããã³ã°ã®å¯èœæ§ãæ¢ãããã»ã¹ã§ããéå°ãªããã¯ãã©ããã³ã°ã¯ãç¹ã«è€éãªãã¿ãŒã³ã«ãããŠãå€§å¹ ãªããã©ãŒãã³ã¹äœäžã«ã€ãªããå¯èœæ§ããããŸããææ°é¢æ°çãªããã¯ãã©ããã³ã°ã«ã€ãªããå¯èœæ§ã®ãããã¿ãŒã³ã¯é¿ããŠãã ããã壿» çãªããã¯ãã©ããã³ã°ã¯ãæ£èŠè¡šçŸãšã³ãžã³ããã¿ãŒã³ã®ãããã³ã°ã«èšå€§ãªæéãè²»ãããŠããéå°ãªããã¯ãã©ããã³ã°ã®ããã«æçµçã«å€±æããå Žåã«çºçããŸãã
壿» çãªããã¯ãã©ããã³ã°ã®äŸ:
const regex = /^(a+)+$/; // Vulnerable to catastrophic backtracking
const str = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaab"; // A string that will trigger the problem
regex.test(str); // This will take a very long time to execute, or freeze the tab/browser
壿» çãªããã¯ãã©ããã³ã°ãé¿ããããã«ã以äžã®ç¹ãèæ ®ããŠãã ããã
- å ·äœçã«ãã: æ£èŠè¡šçŸã®ãã¿ãŒã³ãã§ããã ãå ·äœçã«ããŠãå¯èœãªãããã®æ°ãå¶éããŸãã
- ãã¹ããããéæå®åãé¿ãã:
(a+)+ã®ãããªãã¹ããããéæå®åã¯ãææ°é¢æ°çãªããã¯ãã©ããã³ã°ã«ã€ãªããå¯èœæ§ããããŸããããããªãã§æ£èŠè¡šçŸãæžãçŽããŠã¿ãŠãã ããããã®å Žåãa+ã¯ã¯ããã«åªããããã©ãŒãã³ã¹ã§åãçµæãéæããŸãã - ã¢ãããã¯ã°ã«ãŒãã䜿çšãã:
(?>...)ã§è¡šãããã¢ãããã¯ã°ã«ãŒãã¯ãã°ã«ãŒãå ã§äžèŽãèŠã€ãããšããã¯ãã©ããã³ã°ãé²ããŸããç¹å®ã®ã±ãŒã¹ã§ããã¯ãã©ããã³ã°ãå¶éããã®ã«åœ¹ç«ã¡ãŸããããµããŒãã¯æ£èŠè¡šçŸãšã³ãžã³ã«ãã£ãŠç°ãªãå ŽåããããŸããæ®å¿µãªãããJavaScriptã®æ£èŠè¡šçŸãšã³ãžã³ã¯ã¢ãããã¯ã°ã«ãŒãããµããŒãããŠããŸããã - æ£èŠè¡šçŸã®è€éããåæãã: æ£èŠè¡šçŸã®ãããã¬ãã¢ãã©ã€ã¶ã䜿çšããŠãæ£èŠè¡šçŸãšã³ãžã³ãã©ã®ããã«åäœããŠããããçè§£ããæœåšçãªããã¯ãã©ããã³ã°ã®åé¡ãç¹å®ããŸãã
æååã¡ãœãã
JavaScriptã¯ãindexOf()ãincludes()ãstartsWith()ãendsWith()ãsearch() ãªã©ããã¿ãŒã³ãããã³ã°ã®ããã®ããã€ãã®çµã¿èŸŒã¿æååã¡ãœãããæäŸããŠããŸãããããã®ã¡ãœããã¯ãåçŽãªãã¿ãŒã³ãããã³ã°ã®ã¿ã¹ã¯ã§ã¯æ£èŠè¡šçŸãããé«éãªããšããããããŸãã
indexOf() ãš includes()
indexOf() ã¡ãœããã¯ãæååå
ã§ã®éšåæååã®æåã®åºçŸäœçœ®ã®ã€ã³ããã¯ã¹ãè¿ããŸããéšåæååãèŠã€ãããªãå Žå㯠-1 ãè¿ããŸããincludes() ã¡ãœããã¯ãæååãæå®ãããéšåæååãå«ããã©ããã瀺ãããŒã«å€ãè¿ããŸãã
ãããã®ã¡ãœããã¯ãåçŽãªéšåæååã®æ€çŽ¢ã«ã¯äžè¬çã«éåžžã«å¹ççã§ãã
äŸ:
const str = "example string";
const index = str.indexOf("ex"); // Returns 0
const includes = str.includes("ex"); // Returns true
startsWith() ãš endsWith()
startsWith() ã¡ãœããã¯ãæååãæå®ãããéšåæååã§å§ãŸããã©ããããã§ãã¯ããŸããendsWith() ã¡ãœããã¯ãæååãæå®ãããéšåæååã§çµãããã©ããããã§ãã¯ããŸãã
ãããã®ã¡ãœããã¯ãããããã®ç¹å®ã®ã¿ã¹ã¯ã«æé©åãããŠãããäžè¬çã«éåžžã«å¹ççã§ãã
äŸ:
const str = "example string";
const startsWith = str.startsWith("ex"); // Returns true
const endsWith = str.endsWith("ing"); // Returns true
search()
search() ã¡ãœããã¯ãæååãæ£èŠè¡šçŸã«å¯ŸããŠæ€çŽ¢ããŸããæåã®äžèŽã®ã€ã³ããã¯ã¹ãè¿ããäžèŽãèŠã€ãããªãå Žå㯠-1 ãè¿ããŸããæ£èŠè¡šçŸã䜿çšããŸãããåçŽãªæ£èŠè¡šçŸæ€çŽ¢ã®å Žåãregex.test() ã regex.exec() ãçŽæ¥äœ¿çšãããããé«éãªããšããããããŸãã
äŸ:
const str = "example string";
const index = str.search(/ex/); // Returns 0
ããã©ãŒãã³ã¹æ¯èŒ: æ£èŠè¡šçŸ vs. æååã¡ãœãã
æ£èŠè¡šçŸãšæååã¡ãœããã®ã©ã¡ããéžæãããã¯ããã¿ãŒã³ã®è€éããšç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«äŸåããŸããåçŽãªéšåæååã®æ€çŽ¢ã§ã¯ãæååã¡ãœããã®æ¹ãæ£èŠè¡šçŸãããé«éã§å¹ççãªããšããããããŸããããããç¹æ®æåãã¡ã¿æåãå«ãè€éãªãã¿ãŒã³ã®å Žåã¯ãæ£èŠè¡šçŸã®æ¹ãè¯ãéžæã§ãã
äžè¬çãªã¬ã€ãã©ã€ã³:
- åçŽãªéšåæååã®æ€çŽ¢ã«ã¯ãæååã¡ãœãã (
indexOf(),includes(),startsWith(),endsWith()) ã䜿çšããŸãã - ç¹æ®æåãã¡ã¿æåããŸãã¯é«åºŠãªãããã³ã°æ©èœãå¿ èŠãªè€éãªãã¿ãŒã³ã«ã¯ãæ£èŠè¡šçŸã䜿çšããŸãã
- ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«æé©ãªã¢ãããŒããæ±ºå®ããããã«ãã³ãŒãããã³ãããŒã¯ããŸãã
æé©åæè¡
æ£èŠè¡šçŸãšæååã¡ãœããã®ã©ã¡ããéžæãããã«ããããããJavaScriptã§ã®æååãã¿ãŒã³ãããã³ã°ã®ããã©ãŒãã³ã¹ãåäžãããããã«é©çšã§ããããã€ãã®æé©åæè¡ããããŸãã
1. æ£èŠè¡šçŸããã£ãã·ã¥ãã
åè¿°ã®ããã«ãæ£èŠè¡šçŸã®ã³ã³ãã€ã«ã¯èšç®ã³ã¹ããé«ããªãå¯èœæ§ããããŸããåãæ£èŠè¡šçŸãè€æ°å䜿çšããå Žåã¯ãããããã£ãã·ã¥ããŠç¹°ãè¿ãã®ã³ã³ãã€ã«ãé¿ããŠãã ããã
äŸ:
const regex = new RegExp("pattern"); // Cache the regex
function search(str) {
return regex.test(str);
}
2. æ£èŠè¡šçŸãåçŽåãã
è€éãªæ£èŠè¡šçŸã¯ããã©ãŒãã³ã¹ã®äœäžã«ã€ãªããå¯èœæ§ããããŸããèšç®äžã®ãªãŒããŒããããåæžããããã«ãå¯èœãªéããã¿ãŒã³ãåçŽåããŠãã ããã
3. ããã¯ãã©ããã³ã°ãé¿ãã
éå°ãªããã¯ãã©ããã³ã°ã¯ããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããŸããããã¯ãã©ããã³ã°ã®å¯èœæ§ãæå°éã«æããããã«æ£èŠè¡šçŸãèšèšããŠãã ãããã¢ãããã¯ã°ã«ãŒãïŒãšã³ãžã³ã§ãµããŒããããŠããå ŽåïŒãæææ Œéæå®åãªã©ã®æè¡ã䜿çšããŠãããã¯ãã©ããã³ã°ãé²ããŸãã
4. é©åãªå Žåã«æååã¡ãœããã䜿çšãã
åçŽãªéšåæååã®æ€çŽ¢ã§ã¯ãæååã¡ãœããã®æ¹ãæ£èŠè¡šçŸãããé«éã§å¹ççãªããšããããããŸããå¯èœãªéããããã䜿çšããŠãã ããã
5. æååé£çµãæé©åãã
æååã®é£çµããç¹ã«ã«ãŒãå ã§ã¯ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããå¯èœæ§ããããŸãããã³ãã¬ãŒããªãã©ã«ãæååã®é åãçµåãããªã©ãå¹ççãªæååé£çµæè¡ã䜿çšããŠãã ããã
äŸ:
// Inefficient: Repeated string concatenation
let str = "";
for (let i = 0; i < 1000; i++) {
str += i;
}
// Efficient: Using an array and join()
const arr = [];
for (let i = 0; i < 1000; i++) {
arr.push(i);
}
const str = arr.join("");
// Efficient: Using template literals
let str = ``;
for (let i = 0; i < 1000; i++) {
str += `${i}`;
}
6. WebAssemblyã®äœ¿çšãæ€èšãã
ããã©ãŒãã³ã¹ãéåžžã«éèŠãªæåååŠçã¿ã¹ã¯ã«ã¯ãWebAssemblyã®äœ¿çšãæ€èšããŠãã ãããWebAssemblyã䜿çšãããšãC++ãRustãªã©ã®èšèªã§ã³ãŒããèšè¿°ãããã©ãŠã¶ã§ãã€ãã£ãã«è¿ãé床ã§å®è¡ã§ãããã€ããªåœ¢åŒã«ã³ã³ãã€ã«ã§ããŸããããã«ãããèšç®éçŽçãªæååæäœã®ããã©ãŒãã³ã¹ãå€§å¹ ã«åäžããå¯èœæ§ããããŸãã
7. è€éãªæååæäœã«ã¯å°çšã®ã©ã€ãã©ãªã䜿çšãã
æ§é åããŒã¿ã®è§£æãé«åºŠãªããã¹ãåŠçãªã©ãè€éãªæååæäœã¿ã¹ã¯ã«ã¯ãLodashãUnderscore.jsããŸãã¯å°éã®è§£æã©ã€ãã©ãªãªã©ã®å°çšã©ã€ãã©ãªã®äœ¿çšãæ€èšããŠãã ããããããã®ã©ã€ãã©ãªã¯ãäžè¬çãªæååæäœã«å¯ŸããŠæé©åãããå®è£ ãæäŸããŠããããšããããããŸãã
8. ã³ãŒãããã³ãããŒã¯ãã
ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«æé©ãªã¢ãããŒããæ±ºå®ããããã®æè¯ã®æ¹æ³ã¯ãããŸããŸãªã¡ãœãããšæé©åæè¡ã䜿çšããŠã³ãŒãããã³ãããŒã¯ããããšã§ãããã©ãŠã¶ã®éçºè ããŒã«ã«ããããã©ãŒãã³ã¹ãããã¡ã€ãªã³ã°ããŒã«ã䜿çšããŠãããŸããŸãªã³ãŒãã¹ããããã®å®è¡æéãæž¬å®ããŸãã
å®éã®äŸãšèæ ®äºé
æååãã¿ãŒã³ãããã³ã°ã®ããã©ãŒãã³ã¹ã®éèŠæ§ã瀺ããããã€ãã®å®éã®äŸãšèæ ®äºé ã以äžã«ç€ºããŸãã
- ããŒã¿æ€èšŒ: ãã©ãŒã ã§ã®ãŠãŒã¶ãŒå ¥åã®æ€èšŒã«ã¯ãããŒã¿ãç¹å®ã®åœ¢åŒïŒäŸïŒã¡ãŒã«ã¢ãã¬ã¹ãé»è©±çªå·ãæ¥ä»ïŒã«æºæ ããŠããããšã確èªããããã«ãè€éãªæ£èŠè¡šçŸããã䜿çšãããŸãããããã®æ£èŠè¡šçŸãæé©åããããšã§ãWebã¢ããªã±ãŒã·ã§ã³ã®å¿çæ§ãåäžãããããšãã§ããŸãã
- æ€çŽ¢æ©èœ: Webãµã€ããã¢ããªã±ãŒã·ã§ã³ã«æ€çŽ¢æ©èœãå®è£ ããã«ã¯ãå¹ççãªæååãããã³ã°ã¢ã«ãŽãªãºã ãå¿ èŠã§ããæ€çŽ¢ã¯ãšãªãæé©åããããšã§ãæ€çŽ¢çµæã®é床ãšç²ŸåºŠãå€§å¹ ã«åäžããŸãã
- ããã¹ãè§£æ: 倧ããªããã¹ããã¡ã€ã«ãããŒã¿ã¹ããªãŒã ã®è§£æã«ã¯ãè€éãªæååæäœãããå«ãŸããŸãããããã®æäœãæé©åããããšã§ãåŠçæéãšã¡ã¢ãªäœ¿çšéãåæžã§ããŸãã
- ã³ãŒããšãã£ã¿ãšIDE: ã³ãŒããšãã£ã¿ãšIDEã¯ãæ§æã®ãã€ã©ã€ããã³ãŒãè£å®ããªãã¡ã¯ã¿ãªã³ã°ãªã©ã®æ©èœã®ããã«ãæååãã¿ãŒã³ãããã³ã°ã«å€§ããäŸåããŠããŸãããããã®æäœãæé©åããããšã§ããšãã£ã¿å šäœã®ããã©ãŒãã³ã¹ãšå¿çæ§ãåäžãããããšãã§ããŸãã
- ãã°åæ: ãã°ãã¡ã€ã«ã®åæã«ã¯ãç¹å®ã®ãã¿ãŒã³ãããŒã¯ãŒãã®æ€çŽ¢ãããå«ãŸããŸãããããã®æ€çŽ¢ãæé©åããããšã§ãåæããã»ã¹ãé«éåããæœåšçãªåé¡ãããè¿ éã«ç¹å®ã§ããŸãã
åœéå (i18n) ãšããŒã«ãªãŒãŒã·ã§ã³ (l10n) ã®èæ ®äºé
åœéåãããã¢ããªã±ãŒã·ã§ã³ã§æååãã¿ãŒã³ãããã³ã°ãæ±ãå ŽåãããŸããŸãªèšèªãæåã»ããã®è€éããèæ ®ããããšãäžå¯æ¬ ã§ããè±èªã§ã¯ããŸãæ©èœããæ£èŠè¡šçŸããç°ãªãæåã»ãããåèªæ§é ããŸãã¯ç §åèŠåãæã€ä»ã®èšèªã§ã¯æ£ããæ©èœããªãå ŽåããããŸãã
æšå¥šäºé :
- Unicode察å¿ã®æ£èŠè¡šçŸã䜿çšãã: Unicodeæåããããã£ããµããŒãããæ£èŠè¡šçŸã䜿çšããŠãããŸããŸãªæåã»ãããæ£ããåŠçããŸãã
- ãã±ãŒã«åºæã®ç §åãèæ ®ãã: æååããœãŒããŸãã¯æ¯èŒããéã«ã¯ããã±ãŒã«åºæã®ç §åèŠåã䜿çšããŠãããŸããŸãªèšèªã§æ£ç¢ºãªçµæãä¿èšŒããŸãã
- åœéåã©ã€ãã©ãªã䜿çšãã: ããŸããŸãªèšèªãæåã»ãããç §åèŠåãåŠçããããã®APIãæäŸããåœéåã©ã€ãã©ãªãå©çšããŸãã
ã»ãã¥ãªãã£ã«é¢ããèæ ®äºé
æååãã¿ãŒã³ãããã³ã°ã«ã¯ãã»ãã¥ãªãã£äžã®åœ±é¿ããããŸããæ£èŠè¡šçŸã¯ãæ£èŠè¡šçŸãµãŒãã¹æåŠïŒReDoSïŒæ»æã«å¯ŸããŠè匱ã§ããå¯èœæ§ããããŸãããã®æ»æã§ã¯ãå·§åŠã«äœãããå ¥åæååãæ£èŠè¡šçŸãšã³ãžã³ã«éå°ãªãªãœãŒã¹ãæ¶è²»ãããã¢ããªã±ãŒã·ã§ã³ãã¯ã©ãã·ã¥ãããå¯èœæ§ããããŸããç¹ã«ããã¹ããããéæå®åãæã€æ£èŠè¡šçŸã¯è匱ãªããšãå€ãã§ãã
ReDoSã®è匱æ§ã®äŸ
const regex = new RegExp("^(a+)+$");
const evilInput = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa!";
regex.test(evilInput); // May freeze or crash the browser
æšå¥šäºé :
- ãŠãŒã¶ãŒå ¥åããµãã¿ã€ãºãã: æªæã®ãããã¿ãŒã³ãæ£èŠè¡šçŸã«æ³šå ¥ãããã®ãé²ãããã«ãåžžã«ãŠãŒã¶ãŒå ¥åããµãã¿ã€ãºããŸãã
- æ£èŠè¡šçŸã®è€éããå¶éãã: ReDoSæ»æã«å¯ŸããŠè匱ã«ãªãå¯èœæ§ã®ãããé床ã«è€éãªæ£èŠè¡šçŸãé¿ããŸãã
- æéå¶éãèšå®ãã: æ£èŠè¡šçŸã®å®è¡ã«æéå¶éãèšããŠãéå°ãªãªãœãŒã¹ãæ¶è²»ããã®ãé²ããŸãã
- æ£èŠè¡šçŸåæããŒã«ã䜿çšãã: æ£èŠè¡šçŸåæããŒã«ã䜿çšããŠããã¿ãŒã³å ã®æœåšçãªè匱æ§ãç¹å®ããŸãã
çµè«
æååãã¿ãŒã³ãããã³ã°ã¯JavaScriptéçºã®éèŠãªåŽé¢ã§ãããããã©ãŒãã³ã¹ã«å€§ããªåœ±é¿ãäžããå¯èœæ§ããããŸããããŸããŸãªãã¿ãŒã³ãããã³ã°æè¡éã®ãã¬ãŒããªããçè§£ããé©åãªæé©åæè¡ãé©çšããããšã§ãé«è² è·äžã§ãåªããããã©ãŒãã³ã¹ãçºæ®ããå¹ççãªJavaScriptã³ãŒããäœæã§ããŸããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§æååãã¿ãŒã³ãããã³ã°ãæ±ãéã«ã¯ãåžžã«ã³ãŒãããã³ãããŒã¯ããåœéåãšã»ãã¥ãªãã£ãžã®åœ±é¿ãèæ ®ããããšãå¿ããªãã§ãã ããã