ãã®ãããæè¿ãå€ãã®ã²ã©ãJavaScriptã³ãŒããèªãã§ãªãã¡ã¯ã¿ãªã³ã°ããå¿
èŠããããŸããã ãã®ãããªã³ãŒããæ±ãã«ã¯ãåè¡ãããšãã«å€ãã®ç¥çµããããããã®ãããªã³ãŒããèšè¿°/ãããã°ããã®ã¯è¯ããããŸããã 人ã
ãæªãã³ãŒããæžãåå ãšãã®å¯ŸåŠæ¹æ³ã«ã€ããŠã®èãããããã®èšäºãæžããŸããã ã³ãŒãã®å質ããããéäºã®ãããã¯ãæããã«ãããµããããã€ããã¯ãããŸãããæãå€ãã®åé¡ãåŒãèµ·ããããã€ãã®åŽé¢ã®ã¿ãæ€èšããããšæããŸãã ã³ãŒãå質ãæé©åããããã®ã¡ã€ã³ããŒã«ãšããŠJSLintã䜿çšããããšãææ¡ããŸããããã¯ãã¹ãŠã®å©ç¹ã«ãããããããäžèœè¬ã§ã¯ãªãããããªãã³ãŒãæ¹åã®åºçºç¹ãšããŠã®ã¿æ©èœããŸãã
catã®äžã§javascriptã³ãŒããæžãããèªãã ããããšãã«é çãããããšããã人ã¯èª°ã§ãå°ããŸãã
人ãžã®å¥ä»ã®æšæºããŸãã¯ãã®éïŒ
JavaScriptã¯æžè¡°ããŸãã ãã®èšèªã¯ãã§ããã ãåçŽã§ç®ç«ããªãããã«èšèšãããŠãããããå€ãã®ããªãã¯ãç¥ããªã人ã§ãç°¡åã«javascriptã§æžãå§ããå®éã®åé¡ã解決ã§ããŸãã åŸã§èª¬æããè±å¯ãªjavascriptãã¬ãŒã ã¯ãŒã¯ã¯ãç¶æ³ãæªåãããã ãã§ãã ãããã£ãŠãjavascriptã¯éçºè
åŽã®èªç±ãå¯èœã«ããæ±ãèšèªã§ãã ãããã£ãŠãããªãããããã©ããªãããæžãã ããªããããªãã奜ããªã ãäœåºŠãæªãããšãæžããŸã-èšèªã¯çŠæ¢ããŠããŸããã åœç¶ãè€éãªãããžã§ã¯ãã®å Žåããã®ã¢ãããŒãã¯åãå
¥ããããŸããã
èšèªãç°¡åã«ããããã«ãã³ãŒãã£ã³ã°æšæºããããŸãã ç§ã®å®è·µã§ã¯ãã³ãŒãæ€èšŒããŒã«
JSLintã䜿çšããŠ
æ倧éã«æŽ»çšããŠããŸãã ãªã³ã¯ããã©ããšãJSLintãããªãã®ææ
ãå·ã€ãããšããèè
ã®Douglas Crockfordã®èŠåãèªãããšãã§ããŸãã ããã¯äºå®ã§ã-æ€èšŒããŒã«ã50è¡ã®äœæ¥ã³ãŒãã§50ã®ãšã©ãŒãèŠã€ãããšããç§ã¯éåžžã«å·ã€ããŸããã æåã¯ãããããã¹ãŠã®äžå¿
èŠãªæ
£ç¿ã«åŸãå¿
èŠããããæãå£ããæãåèšç·Žããã¹ããŒã¹ãšäžå¿
èŠãªãã©ã±ãããé
眮ããå¿
èŠããããšããã®ã¯ã¯ã€ã«ãã«æããŸããã 代ããã«æžã
ifïŒelement.parentNode && Math.maxïŒoffset1ãoffset2ãoffset3ïŒ> x1ïŒ{
arr =æ°ããé
åïŒïŒ;
forïŒsome_objectã®å€æ°iïŒ{
ifïŒi == qwertyïŒcontinue;
arr.pushïŒiïŒ;
}
}
ãã®ãããªãã®ïŒ
/ *ã°ããŒãã«qwertyïŒtrueãsome_objectïŒfalse * /
ifïŒelement.parentNode && Math.maxïŒoffset1ãoffset2ãoffset3ïŒ> x1ïŒ{
var arr = []ãi;
forïŒsome_objectã®iïŒ{
ifïŒsome_object.hasOwnPropertyïŒiïŒïŒ{
ifïŒi === qwertyïŒ{
ç¶ãã;
}
arr.pushïŒiïŒ;
}
}
}
ããããjQueryã©ã€ãã©ãªãŒãç§ã®ç®ãåŒããŸãããããã§ã¯ããã¹ãŠã®ãœãŒã¹ã³ãŒããïŒãŸããã»ãŒïŒæå¹ã§ãããä»ã®å€ãã®åªããã¹ããŒãã³ãŒãããããŸãã ç§ã¯å®éšãšããŠãã®æšæºã«åŸãããšã«ããŸããã ãã®çµæãçæãããã³ãŒãã®å質ã倧å¹
ã«åäžãããããã°äžã®ãšã©ãŒãå°ãªããªããèªã¿ããããªããã³ãŒãããããããããªããŸããã ã³ãŒããèªããšãåé¡é åãèšèšãšã©ãŒãæœåšçãªè匱æ§ããããŸãããããã«ããããŸãã JSLintã䜿çšãããšäŸ¿å©ãªå¯äœçšããããŸããããªããŒã¿ãŒã®èŠåã«å¿ããŠãéåžžã¯åã«æ³šæãæããªãå Žæã§èããå¿
èŠãããå ŽåããããŸããããã«ããããšã©ãŒãå®éã«è¡šç€ºãããåã«ä¿®æ£ãããŸããã€ãŸãããããã°ã容æã«ãªããã¢ãŒããã¯ãã£ã®æ¹åã«åœ¹ç«ã¡ãŸããéçºäžã®ã¢ããªã±ãŒã·ã§ã³ã äžè¬ã«ãJSLintã䜿çšããã³ãŒãæ€èšŒãéçºã§äžè¬çã«ãªã£ãå Žåãããã°ã©ãã³ã°ã®äžçã¯ãã£ãšãããã«ãªããŸãã
JSLintã åºæ¬çãªã³ãŒãèŠä»¶
ããã«ãjavascriptã«èª²ããããå¶éã«é¢ãããã°ã©ã¹ã»ã¯ããã¯ãã©ãŒãã®ããã¹ãã®èªç±ãªè§£éãæäŸããŸãã ãã¡ããããªãªãžãã«ã®æ¹ãèªã¿ãããã§ãã
ã°ããŒãã«å€æ°ãšããŒã«ã«å€æ°
ã°ããŒãã«å€æ°ã¯ãjavascriptã ãã§ãªãããã¹ãŠã®ããã°ã©ãã³ã°èšèªã§ãæ倧ã®æªãšåŒã¶ããšãã§ããŸãã çç±ã説æããå¿
èŠã¯ãªããšæããŸãïŒå¿
èŠãªå Žåã
ããã«
ãããŸã ïŒã javascriptã§ã¯ãã°ããŒãã«å€æ°ãããŒã«ã«ã³ã³ããã¹ãã§å®£èšã§ããŸãããç¶æ³ãæªåãããã ãã§ãããªããªããééã£ãŠã°ããŒãã«å€æ°ã宣èšããŠãæ¥ãã§ãå€æ°åã§éãè¯ããã°ãã³ãŒãã«åè¡ããéçºè
ã¯æå³ãç解ããããšããŠå€¢äžã«ãªãããã§ããèè
ãã°ããŒãã«å€æ°ã«åã蟌ãããšããã
JSLintã䜿çšããå ŽåãvarããŒã¯ãŒãã䜿çšããã«å€æ°ã宣èšããããšãçŠæ¢ããŠããå Žåãããã¯èµ·ãããŸããã§ããã å€æ°ãæ¬åœã«ã°ããŒãã«ãªå ŽåãJSLintã¯ãã³ã¡ã³ã/ *ã°ããŒãã«å€æ°å* /ã䜿çšããŠããã®ã³ã³ããã¹ãã§å€æ°ã®å€ã®å²ãåœãŠãèš±å¯ãããã©ãããæå®ããŠãæ瀺çã«ãããæ瀺çã«ç€ºããŸãã
å³æ Œã¢ãŒãã§ã¯ãJSLintã¯ãåããŒã«ã«åå空éã«å¯ŸããŠvarã1åã ã䜿çšããããšãæããŸãã ããã¯ãã¡ããå€æ²ã§ããããªãã¡ã¯ã¿ãªã³ã°ã®åŒã³åºããšããŠæ¡çšããããšããå§ãããŸã-çµå±ã䜿çšçŽåã«å€æ°ã宣èšããã®ãæåã§ããã€ãŸããåºåã°ã«ãŒãã¯ã¡ãœããã«ãã£ãŠåæ£ããã䜿çšå ŽæãããŒã«ã©ã€ãºããå¿
èŠãããããã倧ããªã¡ãœããã®ããŒã«ã«ãšãªã¢ãæ°ãããã®ãšããŠãã©ãŒãããããæ¹ãè¯ãã§ãããJSLintã®æå¹æ§ãåäžãããªãããã¢ã¯ã·ã§ã³ã®æ¬è³ªãå®çŸ©ããååãæã€é¢æ°ã¯ãã³ã¡ã³ãã䜿çšããã«ã³ãŒããææžåããŸãã
ã»ãã³ãã³
å€ãã®ããã°ã©ããŒãç¹ã«Rubyã«ãšã£ãŠã®æ©ã¿ã®çš®-ã»ãã³ãã³ãå
¥ããããªãã®ã§ãããã ãã§ãã javascriptã§ã³ãŒããèšè¿°ãããšãã¯ã錻ã§ã³ãŒãã1ååãå»ãå¿
èŠããããŸãããã¹ãŠã®åœä»€ã®åŸã«ã»ãã³ãã³ãé
眮ãããŸãã äŸå€ïŒforãfunctionãifãswitchãtryãããã³whileã é¢æ°ã宣èšãããšãã«ã»ãã³ãã³ã眮ãå¿
èŠããªãããšã«æ³šæããŠãã ããã
é¢æ°fïŒxïŒ{
}
ãã ããå€æ°ã«å€ãå²ãåœãŠãå Žåã¯èšå®ããå¿
èŠããããŸãã
var f = functionïŒxïŒ{
};
ãã³ã°ã©ã€ã³ãã©ãã
80æåãè¶
ããæååã¯äžé©åã§ãã ã¯ã€ãã¹ã¯ãªãŒã³ã¢ãã¿ãŒã¯å¿ããŠãã ãããã¹ã¯ããŒã«ã§ã¯ãªããã³ãŒãã®è¡ãäžç®ã§èª¬æããå¿
èŠããããŸãã ããããè¡ãåå²ããããšãå¿
èŠã§ãããã®ãããè¡ã®åºåãã®å Žæã§æ§æã®äžå®å
šããæ確ã«è¿œè·¡ãããŸãã JSLintã¯ã次ã®ã¹ããŒãã¡ã³ãã®åŸã«ã®ã¿æ¹è¡ãèš±å¯ããŸãã
ãã ; ïŒ{}ïŒ[= <> ?! +-* /ïŒ
ã^ |ïŒ
==ïŒ= <=> = + =-= * = / =ïŒ
= ^ = | =ïŒ= << >> || &&
===ïŒ== << = >> = >>> >>> =
JSLintã¯ãæååãæ°å€ãèå¥åãéãæ¬åŒ§ãŸãã¯æ¥å°ŸèŸæŒç®åã®åŸã®é·ãæã®ç¿»èš³ãçŠæ¢ããŸã:)] ++-
ããŒã«ã«åå空é
JavaScriptã§ã¯ãããŒã«ã«åå空éã¯1ã€ã®åœä»€ïŒé¢æ°ïŒã®ã¿ãçæããŸãã ããŒã«ã«åå空éãçæããããã«ãããã®éããçæããå Žåã§ããããŸããã ã€ãŸãã次ã®äŸã§ã¯ïŒ
ifïŒx === yïŒ{
var z = 1;
}
ã¢ã©ãŒãïŒzïŒ; // 1
ifãããã¯å
ã§å®çŸ©ãããå€æ°ã¯ãããã¯å€ã§ãå©çšå¯èœã§ããã
ïŒé¢æ°ïŒïŒ{
var x = 1;
}ïŒïŒïŒ;
ã¢ã©ãŒãïŒxïŒ; //ãšã©ãŒïŒæªå®çŸ©ã®å€æ°xïŒ;
é¢æ°å
ã§å®£èšãããå€æ°ã¯å€éšã§ã¯ã¢ã¯ã»ã¹ã§ããŸããããå€æ°ãé¢æ°å€ã§å®£èšãããé¢æ°ãå€æ°ãšåãã³ã³ããã¹ãã§å®£èšãããŠããå Žåãå€æ°ã¯é¢æ°å
ã§ã衚瀺ãããŸãã
var x = 1;
é¢æ°fïŒïŒ{
ã¢ã©ãŒãïŒxïŒ;
}
fïŒïŒ; // 1
ã¯ããŒãžã£ã®åäœã®ã¡ã«ããºã ã®ç解ã«é¢ããŠããã®ãããªäŸã§ã¯éåžžå°é£ãçããŸãïŒ
forïŒx = 1; x <10; x + = 1ïŒ{
setTimeoutïŒé¢æ°ïŒïŒ{
console.logïŒxïŒ;
}ã10ïŒ;
}
ãã®äŸã§ã¯ãæåã®å®è¡æã«åºåãçæãããŸã
10ã10ã10ã10ã10ã10ã10ã10ã10ã10ã10
ãããŠäºçªç®ã«
19ã10ã10ã10ã10ã10ã10ã10ã10ã10
第äžã«
28ã10ã10ã10ã10ã10ã10ã10ã10ã10ã10
æåŸ
ã®ä»£ããã«
1ã2ã3ã4ã5ã6ã7ã8ã9
ããã¯ãååã®å¯èŠæ§ã¡ã«ããºã ãæ£ãã䜿çšããããšã§ã®ã¿å®çŸã§ããŸãã
var f = functionïŒxïŒ{
setTimeoutïŒé¢æ°ïŒïŒ{
console.logïŒxïŒ;
}ã0ïŒ;
};
forïŒx = 1; x <10; x + = 1ïŒ{
fïŒxïŒ;
}
å¿
é ãããã¯
ifãforãããã³ãã®ä»ã®åœä»€ã䜿çšããå Žåã¯ããããã¯ïŒäžæ¬åŒ§ã§æç»ïŒã䜿çšããããšãå³å¯ã«å¿
èŠã§ãã
ifïŒæ¡ä»¶ïŒã¹ããŒãã¡ã³ã;
//ã«çœ®ãæããå¿
èŠããããŸã
ifïŒæ¡ä»¶ïŒ{
ã¹ããŒãã¡ã³ã;
}
æåãš2çªç®ã®ã³ãŒãã¯åãããã«æ©èœããŸãããå®éã«ã¯æåã®ã³ãŒãã¯é¿ããå¿
èŠããããŸãã
èšèªæ§æ
ã®ããã«
ãã®çš®é¡ã®ã«ãŒãã¯ããªããžã§ã¯ããŸãã¯é
åã®ãã¹ãŠã®ã¡ã³ããŒãééããããããããã¿ã€ãã®ç¶æ¿ãããããããã£/ã¡ãœãããééããããã泚æããŠäœ¿çšããå¿
èŠããããŸãã JSLintã§ã¯ããã®ãããªã«ãŒãã®æ¬äœãifãããã¯ã§ã©ããããå¿
èŠããããŸãã
forïŒãªããžã§ã¯ãå
ã®ååïŒ{
ifïŒobject.hasOwnPropertyïŒnameïŒïŒ{
....
}
}
ã¹ã€ãã
åã±ãŒã¹ã®åŸã«å¿
ããã¬ãŒã¯ã䜿çšããŠãã ãã
ãã€ã
ããã䜿çšããå¿
èŠã¯ãããŸããã 誀解ãé¿ããããã«ãéåžžã®æªå®çŸ©ãããåªããŠããŸãã
== andïŒ=
现å¿ã®æ³šæãæã£ãŠäœ¿çšããŠãã ããã ãããã®æŒç®åã¯ããŒã¿åããã£ã¹ããããã€ãŸã '\ t \ r \ n' == 0ãçã§ããããšãèŠããŠããå¿
èŠããããŸãã ãã®æŒç®åã¯åã®äžèŽãæ¯èŒããæååãæ°å€ãšããŠè§£éããå¿
èŠãããå Žæã§parseIntïŒstrãradixïŒã䜿çšããŠæåã§ãã£ã¹ãããããã===ã䜿çšããããšããå§ãããŸãã
=
次ã®å Žåã代å
¥æŒç®åãæ¡ä»¶ãšããŠäœ¿çšããªãæ¹ãé©åã§ãã
ifïŒx = yïŒ{
}
éåžžã¯
ifïŒx == yïŒ{
}
ãã®ã³ãŒããèªãã§ãã人ã¯é垞誀解ãæã£ãŠããŸã-å€åããã«ãšã©ãŒããããŸããïŒ ãã®ãããªæ§é ãæ¬åœã«äœ¿çšããå¿
èŠãããå Žåã¯ãäºéæ¬åŒ§ã䜿çšããŠãããæ瀺çã«æå®ããå¿
èŠããããŸãã
ifïŒïŒx = yïŒïŒ{
}
JSLintã®æŠèŠ
ããã¯JSLintã®èŠä»¶ã®å®å
šãªãªã¹ãã§ã¯ãªããæã泚æãæãå¿
èŠãããèŠä»¶ã®ã¿ã§ãã èå³ã®ãã人ãå®å
šãªãªã¹ããåŸãããã«JSLint.comã«ã¢ã¯ã»ã¹ããããšã¯é£ãããªããšæããŸãã ããã§ãå€ãã®ãšãã£ã¿ãŒã«ã¯ãå
¥åæã«JSLIntã䜿çšããŠã³ãŒããæ€èšŒã§ãããã©ã°ã€ã³ãããããšãè¿œå ããŸãã å人çã«EclipseãšjEditã®ãã©ã°ã€ã³ã䜿çšããŸããã NetBeansçšã®ãã©ã°ã€ã³ããããŸãã 極端ãªå Žåããªã³ã©ã€ã³æ€èšŒããŒã«ã䜿çšã§ããŸãã