lintとはソースコードを厳密に詳細にチェックするプログラムの総称です。総称とある通り、多数の言語でlintは作成されています。
規模や目的の複雑さにもよりますがプログラムを完全に想定した通りに動かすことは容易ではありません。また、想定外の問題が起きることも多々あります。lintはプログラムが動作不能になるような致命的な文法エラーのみならず様々なものを発見する目的で使用します。例えば、間違いを犯しやすい記述であるアンチパターン、インデントの乱れのようなコードスタイルのぶれなどです。lintはソースコードをコピペするだけで実行されるwebページの手軽なものから、様々な設定を行った上で複数フォルダ間を総じて検査するCLIのがっつりしたものまでさまざまな規模のものがあります。
手軽なjavascriptのlintの一つとしてjshintというものがあります。このページはコピペだけでjavascriptの厳密なチェックを行ってくれます。
以前記述した10行程度の簡単なコードをjshintにかけてみました。結果は下の図の通りです。
セミコロンが抜けているという警告、未定義の変数が存在しているという報告がされました。前者は限られた状況、例えばブックマークレットや一行記述にコードを変形した際に、プログラムの挙動が変化したり、実行不能になったりする問題が起きます。今回のケースに限り後者は大きな問題です。この記述においてhoge_strはグローバル変数として扱われ名前領域の汚染など他の記述に影響を与えてバグの原因になりえます。
非常に多くの場面で使われているオープンソースの一つであるjQuery中の一つファイルをjshintにかけた結果が下の図です。
全体で130行程度のコードですが、完璧に記述されています。変数defineが未定義とされていますが、他のファイルとの連携のために記述されているもので、このファイルの処理中には一切登場しません。余談ですがこのファイルはjQueryのcoreフォルダ中で最も長いファイルです。上手く作られていますね。