JSLintオプション考察「inefficient subscripting」

2013年09月05日

カテゴリー:

「inefficient subscripting」は、オブジェクトのプロパティを参照する際、参照するプロパティ名が動的ではなく、静的に決定されているにもかかわらず、ブラケット([ ])を用いたプロパティ参照をすることを許可するかどうかのオプションです。
デフォルト(false)では、プロパティの動的参照を行う場合を除き、プロパティの参照にはブラケットではなく、ドットを使うことが強制されます。

このオプションがデフォルト(false)の状態で、次のコードをJSLintでチェックすると「[‘age’] is better written in dot notation.」という警告が表示されます。

var person = {
        name: "hoge",
        age: 25
    };

window.console.log(person["age"]);  //['age'] is better written in dot notation.

上記のコードの6行目でpersonオブジェクトのageプロパティを参照していますが、この場合参照するプロパティは固定的に「age」であると決まっているので、わざわざブラケットを使った参照をする必要はなく、下のコードの様にドットを使った方がシンプルに記述することができます。

var person = {
        name: "hoge",
        age: 25
    };

window.console.log(person.age);

ただし、次のコードの様に参照するプロパティが実行時に決定されるケース(つまり、ブラケットの中身が変数である場合)ではドットを使った参照はできないので、ブラケットを使用したプロパティ参照が許可されます。

function func(prop_name) {
    "use strict";

    var person = {
        name: "hoge",
        age: 25
    };

    window.console.log(person[prop_name]);
}

固定的なプロパティ参照をするケースにおいて、わざわざブラケットを使用したプロパティ参照をすることのメリットはありません。このような場合、通常はドットを使ったプロパティ参照にした方が少ない文字数でシンプルに記述できるので、このオプションはデフォルト(false)にしておいた方が良いでしょう。

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