Я только начал писать свой собственный Фреймворк JavaScript (просто для обучения) и добавил к некоторым частным членам префикс _, например:
var _isFireBugEnabled = function () {
return (window.console && window.console.firebug);
};
Когда я запустил свой код против JSLint Крокфорда (как всегда) с включенным Recommended Options, мне сказали, что не нужно использовать _ в качестве идентификатора.
Мой вопрос: Почему JSLint предупреждает меня о том, что не нужно использовать _ в качестве идентификатора?
Есть ли какие-то побочные эффекты или последствия, которые мне здесь не хватает?
PS. Насколько я только что смог просканировать, это не задокументировано в книга



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я действительно написал об этом Крокфорду по электронной почте. Это был его ответ:
I think _ should be reserved for system code implementation, and not used by applications.
Я несколько не согласен с ним, я обычно использую _ для обозначения действительно закрытых членов в моих собственных классах, потому что это дает мне понять, что является закрытым. У Google Caja есть некоторые правила относительно использования _, но нет ничего, что могло бы вызвать проблемы с тем, что вы описываете.
Причина в том, что Дуглас Крокфорд ненавидит около 78% Javascript *. Многие думают, что он немного строг, и на самом деле многие библиотеки действительно используют символы подчеркивания в производственном коде. Я не вижу в этом ничего плохого. Побочных эффектов нет.
Кроме того, символ «$», а не подчеркивание, был выделен Спецификация ECMA для «системного» кода.
from ECMA 262, section 7.6:
This standard specifies one departure from the grammar given in the Unicode standard: The dollar sign ($) and the underscore (_) are permitted anywhere in an identifier. The dollar sign is intended for use only in mechanically generated code.
* Примечание: я шучу. На самом деле он ненавидит только половину, и обычно у него есть веские причины. Я не согласен с Крокфордом здесь, но обычно он очень прав.
Caja жалуется только на два символа подчеркивания, поэтому {{{foo_}}} в порядке, но {{{foo__}}} запрещено. Это предназначено, среди прочего, для предотвращения случайного доступа к специальным свойствам интерпретатора, таким как {{{прото}}}