
ãã®ãããæè¿ãå€ãã®ã²ã©ã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çšã®ãã©ã°ã€ã³ããããŸãã 極端ãªå Žåããªã³ã©ã€ã³æ€èšŒããŒã«ã䜿çšã§ããŸãã