JSLintオプション考察「many var statements per function」

2013年09月11日

カテゴリー:

「many var statements per function」は、関数内に複数のvar文を使用することを許可するかどうかのオプションです。デフォルト(false)では、var文は関数につき1つまで許可され、2つ以上のvar文を用いると「Combine this with the previous ‘var’ statement.」という警告が表示されます。

例えば、次のコード例は2つの変数をそれぞれvar文で宣言(と初期化)し、これらの和を返す単純な関数です。
この関数にはどこにもエラーはなく、当然ながら予想された結果である「3」を返します。

しかしこのオプションがデフォルト(false)の場合、JSLintでは警告が表示されます。

//アンチパターン
function test() {
    "use strict";

    var a = 1;
    var b = 2; //警告:Combine this with the previous 'var' statement.

    return a + b;
}

JSLintのチェックを通すためには、上記の関数は次の様に書かなくてはなりません。

function test() {
    "use strict";

    var a = 1,
        b = 2;

    return a + b;
}

後者のコードでは、変数を宣言する度にvar文を使うのではなく、複数の宣言をカンマで区切って全ての変数宣言をvarの1文で済ませています。JavaScriptではこのような書き方もできるんです。
また、この書き方はJavaScriptのコーディングにおける作法(パターン)の一つとして「単独varパターン」と呼ばれたりもします。

つまり、JSLintのデフォルト設定では、この「単独varパターン」を用いることが強制されるということになりますね。
強制するからには、それなりの理由があります。これについては、別エントリで詳細をまとめていますので、そちらを参考にしてみてください。

■「単独varパターン」のススメ
http://analogic.jp/single-var-pattern/

上記のエントリでも触れていますが、基本的に単独varパターンを使用することによるデメリットはありません(メリットはあります)。また、「変数の巻き上げ」のような予期せぬトラブルを未然に防ぐことにも役立ちます。

従って、単独varパターンでのコーディングを強制させるためにも、このオプションはデフォルト(false)のままにしておいた方が良いでしょう。

JSLintのオプション一覧ページへ