JSLintオプション考察「console,alert, …」

2013年06月18日

カテゴリー:

ユーザーになんらかのメッセージを表示させたり、変数の内容をチェックする際に下記の様に alert や console.log を使うことがあるかと思います。

function func() {
    "use strict";
    var x = 123,
        msg = "Hello World!!";

    console.log(x);    //'console' was used before it was defined.
    alert(msg);        //'alert' was used before it was defined.
}

func();

JSLintのオプションである「console,alert, …」がデフォルト(false)のままだと、上記のコードでは「‘console’ was used before it was defined.」「‘alert’ was used before it was defined.」といった警告が出ます。これは console や alert が未定義であるということです。

console や alert は本来 windowオブジェクトに属するオブジェクト・メソッドなので、本来であれば下記の様に書くべきです。(※この場合、「a browser」オプションを true にしておく必要があります。)

function func() {
    "use strict";
    var x = 123,
        msg = "Hello World!!";

    window.console.log(x);
    window.alert(msg);
}

func();

このオプションを true にするか false にするかは自由ですが、制限の解除は最小限にすべきという原則を踏まえると優先順位は低いので、私は false にしています。また、console や alert文はコードのデバッグ用途として使用されることが多く、最終的には不要となるケースも多いと思いますので、消し忘れを防ぐという意味でも ここはデフォルト(false) にしておくべきだと思います。

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