Стандарт именования/форматирования глобальных переменных
Что такое именование и формат форматирования глобальных переменных в JavaScript?
Например:
var global_var // ?
var _global_var // ?
var GLOBAL_VAR // ?
var _GLOBAL_VAR // ?
...
Примечание. Я не говорю о константах, просто переменных, имеющих глобальную область.
Ответы
Ответ 1
Стандартов не существует. Наиболее распространенной практикой является использование более низкого верблюжьего случая (например, var fooBarBaz;
) для всех переменных и имен свойств независимо от области действия, но это отнюдь не универсально. Единственным исключением является использование имени функции, предназначенной для использования в качестве конструктора:
function SomeClass() {}
var someClassObj = new SomeClass();
Я также видел капители блоков и символы подчеркивания, используемые для переменных, которые автор считает константами, или, альтернативно, для всех глобальных переменных:
var EARTH_RADIUS = 6378100;
Еще одно разумное общее соглашение (хотя и не одно, которое я использую сам) - это префикс свойств объектов, которые автор хочет считать приватными с подчеркиванием:
this._leaveThisAlone = "Magical property";
Дуглас Крокфорд опубликовал свой собственный подход к стандартам кода JavaScript несколько лет назад, который охватывает большую часть этого, но, как всегда, это всего лишь мнение одного человека, так что возьмите с собой щепотку соли.
Ответ 2
Необходимый комментарий о переосмыслении дизайна, если вам нужно использовать глобальные переменные, бла-бла...
Глобальные переменные, которые я видел, обычно имеют префикс g
или gbl
. Иногда это изменяется с помощью подчеркивания: _g
, _gbl
. IIRC, подчеркивания использовались, когда "глобальный" ограничивался некоторой областью, а не "действительно" глобальным.
Если вы собираетесь использовать глобальную переменную таким образом, чтобы ВСЕМ не было возможности использовать переменную, я бы использовал символ подчеркивания. В javascript (IIRC) соглашение об использовании подчеркивания в качестве префикса подразумевает, что переменная 'private' или не должна использоваться извне. Если вы, поочередно, объявляете его так, чтобы каждый мог иметь доступ и изменять, тогда я бы использовал только префикс и не подчеркивал.
Ответ 3
Одна большая причина, по которой люди говорили бы вам не использовать глобальные переменные, - это не мешать другим скриптам и/или библиотекам.
Соглашение, которое я начал использовать, когда мне нужно использовать глобальную переменную, - это добавить мою фамилию - таким образом, я знаю, что не буду вмешиваться в глобальные переменные любых библиотек или внешних скриптов. (Хотя у меня есть довольно уникальная фамилия - это может не сработать, если вы Смит).
Итак, мои глобальные переменные будут называться:
var foo_lastnameGlobal;
var bar_lastnameGlobal;
Я должен указать (в случае, если это неясно), это просто личное соглашение, а не обычное или широко используемое. Это также помогает мне помнить, что такое мои глобальные переменные, когда я их использую. Полагаю, что это может быть не так хорошо для общедоступного кода или рабочей среды профессиональной группы.
Ответ 4
Если вы хотите, чтобы employeeID был глобальной переменной, тогда правильный метод - объявить как
window.employeeID = 5;
а затем используйте window.employeeID во всех местах, к которым вы будете обращаться позже.