ããã°ã©ã ã®ãšã©ãŒãåŠçããããŒã«ã®äœæã«æºãã£ãŠãã
Rollbar瀟ã¯ãJavaScriptã§1000以äžã®ãããžã§ã¯ãã®ããŒã¿ããŒã¹ãåæããæãäžè¬çãªãšã©ãŒãèŠã€ããããšã«ããŸããã ãã®çµæã10åã®æãäžè¬çãªãšã©ãŒã®ãªã¹ããäœæãããããã®çºçåå ãåæããããããä¿®æ£ããã³åé¿ããæ¹æ³ã«ã€ããŠè©±ããŸããã 圌ãã¯ããããã®ãã°ãç¥ãããšã¯ãJSéçºè
ãããè¯ãã³ãŒããæžãã®ã«åœ¹ç«ã€ãšä¿¡ããŠããŸãã
æ¬æ¥ã圌ãã®ç 究ã®ç¿»èš³ãå
¬éããŸãã
åæææ³
æè¿ã¯ããŒã¿ããã¹ãŠãªã®ã§ã
JavaScriptãããžã§ã¯ãã§æãããèŠããããšã©ãŒãèŠã€ããåæããã©ã³ã¯ä»ãããŸããã ã€ãŸãããããžã§ã¯ãããšã«ãšã©ãŒæ
å ±ãåéããããã®åŸãåã¿ã€ãã®ãšã©ãŒæ°ãèšç®ãããŸããã ãšã©ãŒã¯ãã§ãã¯ãµã ããšã«ã°ã«ãŒãåããããã®èšç®æ¹æ³ã¯ãã¡ãã§ç¢ºèªã§ã
ãŸã ã ãã®ã¢ãããŒãã䜿çšãããšãããšãã°ããããããžã§ã¯ãã§ç¹å®ã®ãšã©ãŒãèŠã€ãã£ãå Žåããã®ãšã©ãŒãå¥ã®å Žæã§èŠã€ãã£ãå Žåããã®ãããªãšã©ãŒã¯ã°ã«ãŒãåãããŸãã ããã«ããã調æ»ã«é¢ä¿ãããã¹ãŠã®ãããžã§ã¯ããåæããåŸããšã©ãŒã®ç°¡åãªæŠèŠãååŸããããšãã§ãã巚倧ãªãã°ãã¡ã€ã«ã®ãããªãã®ã§ã¯ãªããäœæ¥ã«äžäŸ¿ã§ãã
調æ»äžãæãäžè¬çãªãšã©ãŒã«ç¹å¥ãªæ³šæãæãããŸããã ãã®ãããªãšã©ãŒãéžæããããã«ããšã©ãŒãçºçããããŸããŸãªäŒæ¥ã®ãããžã§ã¯ãã®æ°ã«ãã£ãŠã©ã³ã¯ä»ããããŸããã ãã®è©äŸ¡ã«ç¹å®ã®ãšã©ãŒã®çºçç·æ°ã®ã¿ãå«ãŸããŠããå Žåãéåžžã«å€§ããªãããžã§ã¯ãã«å
žåçã§ããããä»ã®ãããžã§ã¯ãã§ã¯ãã£ãã«èŠãããªããšã©ãŒã¯ãçµæãããããŸãã
以äžã¯ã調æ»ã®çµæã«åºã¥ããŠéžæããã10åã®ãšã©ãŒã§ãã ãããã¯ãçºçãããããžã§ã¯ãã®æ°ã§ãœãŒããããŸãã
JSãããžã§ã¯ãã§æãé »ç¹ã«çºçãããšã©ãŒãšã©ãŒåã¯ãã·ã¹ãã ãçºè¡ãããšã©ãŒã¡ãã»ãŒãžã®ççž®çã§ãã ã·ã¹ãã ã¡ãã»ãŒãžã«äŸåããŠããããããšã©ãŒãçºçãããšãã«ç°¡åã«ç¹å®ã§ããŸãã 次ã«ããããããåæãããããã®åå ãšå¯ŸåŠæ¹æ³ã«ã€ããŠèª¬æããŸãã
1.äžæãªTypeErrorïŒããããã£ãèªã¿åããŸãã
JavaScriptã§ããã°ã©ã ãäœæããå Žåãããããããã®ãšã©ãŒã¯é »ç¹ã«çºçããŸãã ããšãã°ãããããã£ãèªã¿åã£ãããæªå®çŸ©ã®å€æ°ãã€ãŸãå€ãundefinedã®ã¡ãœãããåŒã³åºãããããããšãããšãGoogle Chromeã§åæ§ã®ãšã©ãŒãçºçããŸãã ChromeããããããŒã³ã³ãœãŒã«ã䜿çšããŠããã®ãšã©ãŒã®å®éã®åäœã確èªã§ããŸãã
ããããã£ãèªã¿åããŸãããšã©ãŒãã®ãšã©ãŒã¯ããŸããŸãªçç±ã§çºçããå¯èœæ§ããããŸãããå€ãã®å ŽåããŠãŒã¶ãŒã€ã³ã¿ãŒãã§ã€ã¹èŠçŽ ãã¬ã³ããªã³ã°ããéã®ç¶æ
ã®èª€ã£ãåæåãåå ã§ãã ãããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã©ã®ããã«çºçãããã®äŸãèŠãŠã¿ãŸãããã ããã§ã¯Reactã䜿çšããŸãããAngularãVueãããã³ãã®ä»ã®ãã¬ãŒã ã¯ãŒã¯ã§ã¯äžè¬çã«åãåæåãšã©ãŒãçºçããŸãã
class Quiz extends Component { componentWillMount() { axios.get('/thedata').then(res => { this.setState({items: res.data}); }); } render() { return ( <ul> {this.state.items.map(item => <li key={item.id}>{item.name}</li> )} </ul> ); } }
ããã§ã¯ã2ã€ã®éèŠãªããšã«æ³šæããå¿
èŠããããŸãã
- æåã¯ãã³ã³ããŒãã³ãã®ç¶æ
ïŒã€ãŸã
this.state
ïŒã¯å€undefined
è¡šãããŸãã
- éåæçã«ããŒã¿ãããŒãããå Žåãã³ã³ããŒãã³ãã
componentWillMount
ãŸãã¯componentWillMount
ã§è¡ããããã©ããã«é¢ä¿ãªããããŒã¿ãããŒããããåã«å°ãªããšã1å衚瀺ããcomponentDidMount
ã Quiz
èŠçŽ ãåããŠè¡šç€ºããããšãã undefined
this.state.items
æžã蟌ãŸãthis.state.items
ã ããã¯ã itemList
ãå€undefined
è¡šãããã¢ã€ãã ãåãåãããšãæå³ããŸãã ãã®çµæãã³ã³ãœãŒã«ã«æ¬¡ã®ãšã©ãŒã衚瀺ãããŸãïŒ "Uncaught TypeError: Cannot read property 'map' of undefined"
ã
ãã®ãšã©ãŒã¯ç°¡åã«ä¿®æ£ã§ããŸãã æãç°¡åãªæ¹æ³ã¯ãã³ã³ã¹ãã©ã¯ã¿ãŒå
ã®ç¶æ
ãé©åãªããã©ã«ãå€ã§åæåããããšã§ãã
class Quiz extends Component {
ã¢ããªã±ãŒã·ã§ã³ã³ãŒãã¯ç°ãªãããã«èŠããŸããããããžã§ã¯ãã§ãã®ãšã©ãŒãä¿®æ£ããæ¹æ³ãšãå€èŠ³ãåé¿ããæ¹æ³ãç¥ã£ãŠããããšãæã¿ãŸãã ããªãã話ããŠããããšãããªãã«ãµãããããªããªãããããã以äžã®ãšã©ãŒãããªããå©ããã§ãããã
2. TypeErrorïŒ 'undefined'ã¯ãªããžã§ã¯ãã§ã¯ãããŸããïŒè©äŸ¡äž...
ãã®ãšã©ãŒã¯ãããããã£ãèªã¿åã£ãããæªå®çŸ©ã®ãªããžã§ã¯ãã®ã¡ãœãããåŒã³åºãããããããšãããšãSafariãã©ãŠã¶ãŒã§çºçããŸãã Safariéçºè
ããŒã«ã³ã³ãœãŒã«ã䜿çšããŠããã®ãšã©ãŒã確èªã§ããŸãã å®éãããã§ã¯Chromeã«ã€ããŠäžèšã§èª¬æããã®ãšåãåé¡ããããŸãããSafariã§ã¯å¥ã®ãšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã
ãšã©ãŒãæªå®çŸ©ãã¯ãªããžã§ã¯ãã§ã¯ãããŸããåã®äŸãšåãããã«ããã®ãšã©ãŒãä¿®æ£ããŸãã
3. TypeErrorïŒnullã¯ãªããžã§ã¯ãã§ã¯ãããŸããïŒè©äŸ¡äž
null
è¡šãããå€æ°ã®ã¡ãœãããŸãã¯ããããã£ã«ã¢ã¯ã»ã¹ããããšãããšãSafariã§ãã®ãšã©ãŒãçºçã
null
ã Safariéçºè
ã³ã³ãœãŒã«ã§ã¯ã次ã®ããã«è¡šç€ºãããŸãã
ãšã©ãŒTypeErrorïŒnullã¯ãªããžã§ã¯ãã§ã¯ãããŸããJavaScriptã§ã¯ã
null
ãš
undefined
ã¯åããã®ã§ã¯ãªãããšãæãåºããŠãã ããããã®ãããç°ãªããšã©ãŒã¡ãã»ãŒãžã衚瀺ãããŸãã å€æ°ã«æžã蟌ãŸãã
undefined
å€ã®æå³ã¯ãå€æ°ã«å€ãå²ãåœãŠãããŠããªãããšã瀺ãã
null
ã¯ç©ºã®å€ã瀺ããŸãã
null
undefined
ãšçãããªãããšã確èªããã«
null
ãå³å¯ãªç䟡æŒç®åã䜿çšããŠããããæ¯èŒã§ããŸãã
éå³å¯ãªç䟡æŒç®åãšå³å¯ãªç䟡æŒç®åã䜿çšããŠæªå®çŸ©ãšãã«ãæ¯èŒããå®éã®ã¢ããªã±ãŒã·ã§ã³ã§ã®ãã®ãšã©ãŒã®åå ã®1ã€ã¯ãèŠçŽ ãããŒãããåã«JavaScriptã§DOMèŠçŽ ã䜿çšããããšããããšã§ãã ããã¯ãDOM APIã空ã®ãªããžã§ã¯ããžã®åç
§ã«å¯ŸããŠ
null
ãè¿ãããã§ãã
DOMèŠçŽ ã䜿çšããJSã³ãŒãã¯ãDOMèŠçŽ ãäœæããåŸã«å®è¡ããå¿
èŠããããŸãã JSã³ãŒãã¯ãHTMLããã¥ã¡ã³ãã«è¡šç€ºããããšãããäžããäžã«è§£éãããŸãã ãããã£ãŠãããã°ã©ã ã®
<script>
ãDOMèŠçŽ ãèšè¿°ããã³ãŒãã®åã«ããå Žåãããã°ã©ã ã¯ããŒãžã®è§£æäžã«ãã®å®äºåã«å®è¡ãããŸãã ãã®ãšã©ãŒã¯ãã¹ã¯ãªããããã¢ã¯ã»ã¹ããDOMèŠçŽ ããã®ã¹ã¯ãªãããããŒãããåã«äœæãããªãã£ãå Žåã«çºçããŸãã
次ã®äŸã§ã¯ãã€ãã³ããªã¹ããã³ãŒãã«è¿œå ããããšã§åé¡ãä¿®æ£ã§ããŸããã€ãã³ããªã¹ãã¯ãããŒãžãå®å
šã«ããŒããããããšãéç¥ããŸãã
addEventListener
ã䜿çšããŠè¿œå ãããã€ãã³ããã³ãã©ãŒ
addEventListener
ãããåŸã
init()
ã¡ãœããã¯DOMèŠçŽ ã§æ£ããåäœã§ããããã«ãªããŸãã
<script> function init() { var myButton = document.getElementById("myButton"); var myTextfield = document.getElementById("myTextfield"); myButton.onclick = function() { var userName = myTextfield.value; } } document.addEventListener('readystatechange', function() { if (document.readyState === "complete") { init(); } }); </script> <form> <input type="text" id="myTextfield" placeholder="Type your name" /> <input type="button" id="myButton" value="Go" /> </form>
4.ïŒäžæïŒïŒã¹ã¯ãªãããšã©ãŒ
ãã®ãšã©ãŒã¯ãã¯ãã¹ãã¡ã€ã³å¶éããªã·ãŒã«éåãããšãã«ããã£ãããããŠããªãJavaScriptãšã©ãŒããã¡ã€ã³ã®å¢çãè¶ãããšçºçããŸãã ããšãã°ãJSã³ãŒããCDNãªãœãŒã¹ã§ãã¹ããããŠããå Žåãã¹ã¯ãªãããšã©ãŒã«é¢ããã¡ãã»ãŒãžããã£ãããããŠããªããšã©ãŒïŒã€ãŸãã
try-catch
ã€ã³ã¿ãŒã»ããããã
window.onerror
ãã³ãã©ãŒã«å°éããªãã£ããšã©ãŒïŒã«é¢ããã¡ãã»ãŒãžã«è¡šç€ºãããŸããã圹ã«ç«ããªããã®ãšã©ãŒæ
å ±ãæé€ããç®çã§ã ããã¯ããœãŒã¹ãç°ãªããã¡ã€ã³ã§ãããéåžžã®æ¡ä»¶äžã§ã¯æ
å ±ã®äº€æãçŠæ¢ãããŠããã³ãŒããã©ã°ã¡ã³ãéã®ããŒã¿è»¢éãé²ãããšãç®çãšãããã©ãŠã¶ããŒã¹ã®ã»ãã¥ãªãã£ã¡ã«ããºã ã®1ã€ã§ãã
ãã®ãšã©ãŒã確èªããã®ã«åœ¹ç«ã€äžé£ã®æé ã次ã«ç€ºããŸãã
1. Access-Control-Allow-Origin
ããããŒãéä¿¡ã
ãŸã ã
Access-Control-Allow-Origin
ããããŒã
*
èšå®ãããšããªãœãŒã¹ã«ä»»æã®ãã¡ã€ã³ããã¢ã¯ã»ã¹ã§ããããšã瀺ããŸãã
å¿
èŠã«å¿ããŠãã¢ã¹ã¿ãªã¹ã¯èšå·ãç¹å®ã®ãã¡ã€ã³ã«çœ®ãæããããšãã§ããŸãïŒäŸ
: Access-Control-Allow-Origin: www.example.com
ã ãã ããè€æ°ã®ãã¡ã€ã³ã®ãµããŒãã¯å°ãè€éã§ãã ãã£ãã·ã¥ã®åé¡ã®å¯èœæ§ããããããCDNã䜿çšããå Žåããã®ãããªãµããŒãã¯æäŸããã®ã«è²»ããåŽåã«å€ããªãå ŽåããããŸãã 詳现ã¯
ãã¡ããã芧ãã ãã ã
ããŸããŸãªç°å¢ã§ãã®ããããŒãèšå®ããäŸã次ã«ç€ºããŸãã
ã¢ãããJavaScriptãã¡ã€ã«ã®ããŒãå
ã®ãã©ã«ããŒã§ã次ã®å
容ã®
.htaccess
ãã¡ã€ã«ãäœæããŸãã
Header add Access-Control-Allow-Origin "*"
Nginxadd_header
ãã£ã¬ã¯ãã£ãã
location
ãããã¯ã«è¿œå ããŸããããã¯ãJSãã¡ã€ã«ã管çãã圹å²ãæãããŸãã
location ~ ^/assets/ { add_header Access-Control-Allow-Origin *; }
HAProxyJSãã¡ã€ã«ã®ãµããŒããæ
åœããã·ã¹ãã ã®èšå®ã«æ¬¡ã®èšå®ãè¿œå ããŸãã
rspadd Access-Control-Allow-Origin:\ *
2. <script>
ã§
crossorigin="anonymous"
èšå®ããŸãã
Access-Control-Allow-Origin
crossorigin="anonymous"
èšå®ãããŠããåã¹ã¯ãªããã®HTMLãã¡ã€ã«ã§ã
<script>
ã§
crossorigin="anonymous"
èšå®ããŸãã
crossorigin
ããããã£ã
<script>
è¿œå ããåã«ãã¹ã¯ãªãããã¡ã€ã«ã®ããããŒãéä¿¡ãããŠããããšã確èªããŠãã ããã Firefoxã§ã¯ã
crossorigin
å±æ§
crossorigin
ååšãããã
Access-Control-Allow-Origin
ããããŒãååšããªãå Žåãã¹ã¯ãªããã¯å®è¡ãããŸããã
5. TypeErrorïŒãªããžã§ã¯ãã¯ããããã£ããµããŒãããŠããŸãã
ãã®ãšã©ãŒã¯ãæªå®çŸ©ã®ã¡ãœãããåŒã³åºãããšãããšIEã§çºçããŸãã IEéçºè
ã³ã³ãœãŒã«ã§ãã®ãšã©ãŒã確èªã§ããŸãã
ãšã©ãŒãªããžã§ã¯ãã¯ããããã£ããµããŒãããŠããŸãããã®ãšã©ãŒã¯ãChromeã§çºçãã
"TypeError: 'undefined' is not a function"
ãšã©ãŒãšåçã§ãã åãè«çãšã©ãŒã«ã€ããŠè©±ããŠãããšããäºå®ã«æ³šæãåèµ·ããŸãããã®è«çãšã©ãŒã¯ããã©ãŠã¶ããšã«ç°ãªãæ¹æ³ã§å ±åãããŸãã
ããã¯ãJavaScriptåå空éãå©çšããWebã¢ããªã±ãŒã·ã§ã³ã®äžè¬çãªIEã®åé¡ã§ãã ãã®ãšã©ãŒãçºçããå Žåã99.9ïŒ
ã®ã±ãŒã¹ã§ããã®åå ã¯IEãçŸåšã®ããŒã ã¹ããŒã¹ã«ããã¡ãœããã
this
ã«ãã€ã³ãã§ããªãããšã§ãã ããšãã°ã
isAwesome
ã¡ãœãããæã€
Rollbar
ãªããžã§ã¯ãããããšããŸãã éåžžããã®ãªããžã§ã¯ãå
ã§ã¯ã
isAwesome
ããã«
isAwesome
ã¡ãœããã
isAwesome
ããšãã§ããŸãã
this.isAwesome();
ChromeãFirefoxãOperaã¯éåžžãã®ã³ãã³ããåãå
¥ããŸãã IEã¯ãããç解ããŠããŸããã ãããã£ãŠãäœãããããã®ãããªæ§æã䜿çšããå Žåã¯ãã¡ãœããåã®åã«ããããå®çŸ©ãããŠãããªããžã§ã¯ãïŒåå空éïŒã®ååãåžžã«ä»ããå¿
èŠããããŸãã
Rollbar.isAwesome();
6. TypeErrorïŒ 'undefined'ã¯é¢æ°ã§ã¯ãããŸãã
æªå®çŸ©ã®é¢æ°ãåŒã³åºãããšãããšãChromeã§ãã®ãšã©ãŒãçºçããŸãã ãã®ãšã©ãŒã¯ãChromeããããããŒããŒã«ã³ã³ãœãŒã«ãšåæ§ã®Firefoxã³ã³ãœãŒã«ã§ç¢ºèªã§ããŸãã
ãšã©ãŒTypeErrorïŒ 'undefined'ã¯é¢æ°ã§ã¯ãããŸããJavaScriptããã°ã©ãã³ã°ã®ã¢ãããŒããšãã¶ã€ã³ãã¿ãŒã³ã¯åžžã«è€éã«ãªã£ãŠãããããã³ãŒã«ããã¯é¢æ°ãšã¯ããŒãžã£ãŒé¢æ°å
ã§ã
this
䜿çšããŠç¬èªã®ã¡ãœãããšããããã£ãžã®åç
§ã䜿çšãããã¹ã³ãŒããåºçŸããç¶æ³ãå¢å ããŠããŸããæ··ä¹±ãšãšã©ãŒã®ããªãäžè¬çãªåå ã§ãã
次ã®äŸãèããŠã¿ãŸãããã
function testFunction() { this.clearLocalStorage(); this.timer = setTimeout(function() { this.clearBoard();
äžèšã®ã³ãŒããå®è¡ãããšã
"Uncaught TypeError: undefined is not a function."
ãšã©ãŒãçºç
"Uncaught TypeError: undefined is not a function."
ãã®ãšã©ãŒãçºçããçç±ã¯ã
setTimeout()
ãåŒã³åºããšãã«
setTimeout()
å®éã«
window.setTimeout()
åŒã³åºãããã§ãã ãã®çµæã
setTimeout()
æž¡ãããå¿åé¢æ°ã¯ã
clearBoard()
ã¡ãœãããæããªã
window
ãªããžã§ã¯ãã®ã³ã³ããã¹ãã§å®çŸ©ãããŸãã
å€ãããŒãžã§ã³ã®ãã©ãŠã¶ãšäºææ§ããããã®åé¡ã解決ããããã®åŸæ¥ã®ã¢ãããŒãã¯ããããžã®ãªã³ã¯ãç¹å®ã®å€æ°ã«ä¿åããããšã§ãã¯ããŒãžã£ãŒããã¢ã¯ã»ã¹ã§ããŸãã ããšãã°ã次ã®ããã«ãªããŸãã
function testFunction () { this.clearLocalStorage(); var self = this;
ææ°ã®ãã©ãŠã¶ã§ã¯ã
bind()
ã¡ãœããã䜿çšããŠå¿
èŠãªãªã³ã¯ãæž¡ãããšãã§ããŸãã
function testFunction () { this.clearLocalStorage(); this.timer = setTimeout(this.reset.bind(this), 0);
7.ãã£ãããããªãRangeErrorïŒæ倧åŒã³åºãã¹ã¿ãã¯
ãã®ãšã©ãŒã«ã¯ãChromeãªã©ãããã€ãã®çç±ããããŸãã ãããã®1ã€ã¯ãååž°é¢æ°ã®ç¡éã®åŒã³åºãã§ãã ChromeããããããŒã³ã³ãœãŒã«ã§ãã®ãšã©ãŒã衚瀺ãããã®ã¯æ¬¡ã®ãšããã§ãã
ãšã©ãŒæ倧ã³ãŒã«ã¹ã¿ãã¯ãµã€ãºãè¶
ããŸããããã¯ãé¢æ°ãç¹å®ã®èš±å®¹ç¯å²å€ã®å€ãæž¡ããšãã«ãçºçããå¯èœæ§ããããŸãã å€ãã®é¢æ°ã¯ãç¹å®ã®ç¯å²ã®æ°åã®ã¿ãåãå
¥ããŸãã ããšãã°ãé¢æ°
Number.toExponential(digits)
ããã³
Number.toFixed(digits)
ã¯ã
Number.toFixed(digits)
digits
ã§è¡šãããåŒæ°
digits
åããé¢æ°
Number.toPrecision(digits)
ã¯
Number.toPrecision(digits)
æ°å€ãåããŸãããããã®ç¶æ³ãèŠãŠã¿ãŸãããããã®ä»ã®ããã€ãã®æ©èœã¯ãšã©ãŒã«ã€ãªãããŸãã
var a = new Array(4294967295); //OK var b = new Array(-1); // ! var num = 2.555555; document.writeln(num.toExponential(4)); //OK document.writeln(num.toExponential(-2)); //! num = 2.9999; document.writeln(num.toFixed(2)); //OK document.writeln(num.toFixed(25)); // ! num = 2.3456; document.writeln(num.toPrecision(1)); //OK document.writeln(num.toPrecision(22)); // !
8. TypeErrorïŒãããã㣠'length'ãèªã¿åããŸãã
undefined
å€æ°ã®
length
ããããã£ãèªã¿åãããšãããšãChromeã§ãã®ãšã©ãŒãçºçããŸãã ChromeããããããŒã³ã³ãœãŒã«ã§ãã®ãšã©ãŒãã芧ãã ããã
ãšã©ãŒãããã㣠'length'ãèªã¿åããŸããéåžžã
length
ããããã£ãåç
§ãããšãé
åã®é·ããããããŸãããé
åãåæåãããŠããªãå ŽåããŸãã¯å€æ°ã®ååãã¹ã³ãŒãã«é ãããŠããå Žåããã®å€æ°ã«ã¢ã¯ã»ã¹ããããšããå Žæããã¢ã¯ã»ã¹ã§ããªãå Žåãäžèšã®ãšã©ãŒãçºçããå¯èœæ§ããããŸã ãã®ãšã©ãŒã®æ¬è³ªãããããç解ããããã«ã次ã®äŸãæ€èšããŠãã ããã
var testArray= ["Test"]; function testFunction(testArray) { for (var i = 0; i < testArray.length; i++) { console.log(testArray[i]); } } testFunction();
é¢æ°ããã©ã¡ãŒã¿ãŒã§å®£èšããããšããããã®ãã©ã¡ãŒã¿ãŒã¯ãã®ããŒã«ã«å€æ°ã«ãªããŸãã ãã®äŸã§ã¯ãé¢æ°ãå²ãã¹ã³ãŒãã«
testArray
å€æ°ãããå Žåã§ããåãååã®ãã©ã¡ãŒã¿ãŒããã®å€æ°ãé衚瀺ã«ããé¢æ°ã®ããŒã«ã«å€æ°ãšããŠèªèãããããšãæå³ããŸãã
ãã®åé¡ã解決ããã«ã¯ããã®å Žåã次ã®2ã€ã®æ¹æ³ã®ããããã䜿çšã§ããŸãã
- é¢æ°ã®å®£èšäžã«æå®ããããã©ã¡ãŒã¿ãŒãåé€ããŸãïŒäŸãããããããã«ãå€éšã§å®£èšãããé
åã®é¢æ°ãæäœãããã®ã§ãããã§é¢æ°ãã©ã¡ãŒã¿ãŒãªãã§å®è¡ã§ããŸãïŒã
var testArray = ["Test"]; function testFunction(/* */) { for (var i = 0; i < testArray.length; i++) { console.log(testArray[i]); } } testFunction();
- 以åã«å®£èšãããé
åãæž¡ãé¢æ°åŒã³åºãïŒ
var testArray = ["Test"]; function testFunction(testArray) { for (var i = 0; i < testArray.length; i++) { console.log(testArray[i]); } } testFunction(testArray);
9.ãã£ãããããªãTypeErrorïŒããããã£ãèšå®ã§ããŸãã
æªå®çŸ©ã®å€æ°ã«ã¢ã¯ã»ã¹ããããšãããšãå®éã«ã¯
undefined
åã®å€ãæäœããŸããããã®åã¯ããããã£ã®èªã¿åããŸãã¯æžã蟌ã¿ããµããŒãããŠããŸããã ãã®å Žåãã¢ããªã±ãŒã·ã§ã³ã¯æ¬¡ã®ãšã©ãŒãè¿ããŸãã
"Uncaught TypeError cannot set property of undefined."
Chromeãã©ãŠã¶ã§ã芧ãã ããã
ãšã©ãŒããããã£ãèšå®ã§ããŸããtest
ãªããžã§ã¯ããååšããªãå Žåããšã©ãŒ
"Uncaught TypeError cannot set property of undefined."
10. ReferenceErrorïŒã€ãã³ãã¯å®çŸ©ãããŠããŸãã
ãã®ãšã©ãŒã¯ãæªå®çŸ©ã®å€æ°ããŸãã¯çŸåšã®ã¹ã³ãŒãå€ã®å€æ°ã«ã¢ã¯ã»ã¹ããããšãããšãã«çºçããŸãã Chromeã³ã³ãœãŒã«ã§ã芧ãã ããã
ãšã©ãŒReferenceErrorïŒfooãå®çŸ©ãããŠããŸããã€ãã³ãåŠçã·ã¹ãã ã®äœ¿çšäžã«ãã®ãšã©ãŒãçºçããå Žåã¯ããã©ã¡ãŒã¿ãŒãšããŠæž¡ãããã€ãã³ããªããžã§ã¯ãã䜿çšããŠããããšã確èªããŠãã ããã IEãªã©ã®å€ããã©ãŠã¶ãŒã¯ãã€ãã³ããžã®ã°ããŒãã«ã¢ã¯ã»ã¹ãæäŸããŸãããããã¯ãã¹ãŠã®ãã©ãŠã¶ãŒã«å
±éããããã§ã¯ãããŸããã jQueryã®ãããªã©ã€ãã©ãªã¯ããã®ç¶æ³ãä¿®æ£ããããšããŠããŸãã ãããã®å Žåããã€ãã³ãåŠçé¢æ°ã«æž¡ãããã€ãã³ããªããžã§ã¯ããæ£ç¢ºã«äœ¿çšããããšããå§ãããŸãã
function myFunction(event) { event = event.which || event.keyCode; if(event.keyCode===13){ alert(event.keyCode); } }
ãŸãšã
ãšã©ãŒã¹ããŒãªãŒããæ°ããäœããåŠã³ãå°æ¥ã®ééããé¿ããã®ã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸããé·ãéæ©ãŸãããŠãã質åã®çããèŠã€ããã®ã«ãã§ã«åœ¹ç«ã£ãŠãããããããŸããã
芪æãªãèªè
ïŒ æ¬çªç°å¢ã§ã¯ã©ã®ãããªJSãšã©ãŒã«ééããŸãããïŒ
