JSLint(ツールの本体)
JSLintは、JavaScriptのコードをチェックしてくれるツールです。
文法エラーってレベルだけでなく、もっと細かいところまでツッコミを入れてくれます。
このツールを作ったのはダグラス・クロックフォード(Douglas Crockford)さん。
なんとJSONの発明者でもあり、JavaScript界の重鎮らしいです。
ほほう〜。
ということでチェックしてみることにしました。
まあ、手慰みみたいなものですよ。
たまにはおじいちゃんの戯言でも聞いてみようかな、みたいな?
僕のコードはとってもきれいですからね。
HAHAHA!
まずは上記のJSLint(ドキュメント)に行ってみます。
ページの先頭にこんな警告が書いてありますよ。
Warning!
JSLint will hurt your feelings.
(警告!JSLintはあなたの気持ちを傷つけるだろう。)
ま〜、おじいちゃんたら人が悪いのね。
この手のツールを使うと山のようにツッコミを食らうものです。
それらを一つずつ検討し、
「なるほどそうなのかー」と納得したり、
「それは違うだろ!」と憤慨したり、
「言ってることはわかるがここは仕方ない」と見切りをつけたり、
そうやって使うものですからね、この手のツールは。
まあ、僕のプログラムには問題ないはずなんでいいんですけど。
WAHAHA!
チェックにかけたのは「リストをリング状に配置するjQueryプラグイン」で公開したjquery.ringlist.jsです。
出るわ出るわエラーが50個。
あれ…?マックスで50個表示…?ってことは50個以上あるの…?
しかも、解析不能ってことで途中で止まってるし。
そりゃないぜ爺さん、HAHAHAHAHA…。
泣いてなんかいないんだからね!
では、気になったエラーについていくつか書いていきます。
・Combine this with the previous 'var' statement.
私のコードで一番多く出たエラーです。
要するに、変数宣言はスコープの先頭で一発でやれ、ってことです。
以下のような感じ。
//JSLint的NG
function doSomething() {
var x = 0;
var y = 0;
if (true) {
var z = 0;
for (var i = 0; i < 10; i++) {
}
}
}
//JSLint的OK
function doSomething() {
var x = 0, y = 0, z = 0, i;
if (true) {
for (i = 0; i < 10; i++) {
}
}
}
JavaScriptにはブロックスコープがないので、関数の先頭で宣言しろって言うのはわかるんですけど…。
for文のカウンター変数もダメっすかー?
やっぱ変数を使う直前に宣言したいし。
・Expected 'case' at column 1, not column 5.
次はcaseのインデント。
こんなの個人の趣味だろうが!
//JSLint的NG
switch (value) {
case 1:
case 2:
case 3:
default:
}
//JSLint的OK
switch (value) {
case 1:
case 2:
case 3:
default:
}
・Missing 'use strict' statement.
JavaScriptはコンパイルする言語に比べれば結構いい加減な書き方ができます。
それを許さない「厳密モード」を使いなさいってことですね。
へ〜、知らなかった。
ただ現時点では、FireFoxぐらいしか実装されてないみたいなので様子見です。
詳しくはこちら。
Firefox 4はECMAScript 5のstrictモードに対応、ブラウザ初の実装
ラベル:javascript JSLint