「dangling _ in identifiers」オプションは、アンダースコア( _ )から始まる変数名(または関数名)を許可するかどうかのオプションです。デフォルト(false)では、アンダースコアから始まる変数名、関数名は許可されません。
function _func() { //Unexpected dangling '_' in '_func'. "use strict"; var foo = 1, _bar = 2; //Unexpected dangling '_' in '_bar'. return foo + _bar; } _func();
上記のコードをJSLintでチェックすると、1行目、5行目でそれぞれ「Unexpected dangling ‘_’ in ‘_func’」「Unexpected dangling ‘_’ in ‘_bar’.」という警告が表示されます。
これはそれぞれ関数名、変数名の先頭がアンダースコア( _ )で始まっているためです
関数名、変数名の先頭にアンダースコアを付けるのはダメなのか?
そんなことはありません。
JavaScriptでは、言語の機能としてプライベートなメンバを定義する方法がありません。ですので、あるオブジェクトのメンバを private にしたい場合、メンバ名の先頭にアンダースコアを付加し、命名規則により private メンバであることを表す、といったことはよくあると思います。
「JavaScriptパターン―優れたアプリケーションのための作法―」には、オブジェクトのメンバ(変数、関数)が public なのか private なのかを区別するための作法の1つとして、プライベートなメソッドやプロパティの先頭にアンダースコアを付加する、という方法が紹介されています。(これ以外にも、クロージャの仕組みを応用して、プライベートメンバを実現させる方法などもあります。)
結局のところ、「dangling _ in identifiers」は開発者次第
JSLintでは、デフォルトでは変数名の先頭にあるアンダースコアに対して警告を出しますが、必ずしもこれに従う必要はないと考えます。
前述のような命名規則でプライベートであることを表したいのであれば、「dangling _ in identifiers」オプションはtrueにすべきでしょうし、命名規則ではなく、全てのプライベートメンバはクロージャによって実現させるのであれば、デフォルトのままでも良いと思います。