2010-11-10 3 views
20

Что такое стандарт именования и форматирования глобальных переменных в JavaScript?Стандарт именования/форматирования глобальных переменных

Например:

var global_var // ? 
var _global_var // ? 
var GLOBAL_VAR // ? 
var _GLOBAL_VAR // ? 
... 

Примечание: Я не говорю о константах, просто переменные, которые имеют глобальный масштаб.

+8

Предупреждение: вы получите много забавных комментариев о том, как никогда, никогда, никогда, никогда, никогда не используйте глобальные переменные. Просто игнорируйте их, поскольку это не имеет никакого отношения к вашему вопросу. –

+0

Спасибо. (Я вижу небольшую разницу между переменной частного класса и глобальной переменной javascript.) – StaceyI

+0

BTW, (на данный момент) в JavaScript нет такой вещи, как константа (хотя 'constant' является зарезервированным ключевым словом для каждой спецификации). –

ответ

15

Не существует стандартов как таковых. Наиболее распространенной практикой является использование нижнего верблюжьего корпуса (например, var fooBarBaz;) для всех переменных и имен свойств независимо от области действия, но это отнюдь не универсально. Единственное исключением является капитализировать имя функции, которая предназначена для использования в качестве конструктора:

function SomeClass() {} 

var someClassObj = new SomeClass(); 

Я также видел печатные буквы и символы подчеркивания используется для переменных, которые автор рассматривает константы, или же для всех глобальные переменные:

var EARTH_RADIUS = 6378100; 

Другой довольно общее соглашение (хотя не один я сам использую) является приставкой свойств объектов, которые автор желает считать частным с подчеркиванием:

this._leaveThisAlone = "Magical property"; 

Douglas Crockford опубликовал his own take on JavaScript code standards несколько лет назад, который охватывает большинство из этого, но, как всегда, это мнение только одного человека, поэтому возьмите с собой щепотку соли.

+1

За статью, с которой вы связались, говорится: «Глобальные переменные должны быть во всех кешках» **. Это противоречит тому, что вы указали выше. – StaceyI

+5

Ну, вот и все. Как я уже сказал, нет официального стандарта, и у Крокфорда есть свои взгляды, которые не все разделяют. –

+0

Все колпачки такие же, как у VART EARTH_RADIUS, на мой взгляд. Как еще вы можете показать, что они являются отдельными словами, если не путем капитализации? – hyprsleepy

3

Необходимый комментарий о переосмыслении дизайн, если вы нуждаясь использовать глобальные переменные, бла-бла ...

глобальные переменные, которые я видел, как правило, начинаются с префикса g или gbl. Иногда это изменяется с помощью символа подчеркивания: _g, _gbl. IIRC, подчеркивания использовались, когда «глобальный» ограничивался некоторой областью, а не «действительно» глобальным.

Если вы собираетесь использовать глобальную переменную таким образом, чтобы ВСЕМ не было возможности использовать переменную, я бы воспользовался символом подчеркивания. В javascript (IIRC) соглашение об использовании подчеркивания в качестве префикса подразумевает, что переменная является «частной» или не должна использоваться извне. Если вы, поочередно, объявляя его таким образом, чтобы каждый мог иметь доступ и изменять, я бы использовал только префикс и не подчеркивал.

-2

Если вы хотите, чтобы employeeID был глобальной переменной, тогда правильный метод заключается в объявлении как window.employeeID = 5; , а затем используйте window.employeeID во всех местах, к которым вы будете обращаться позже.

+2

Вы подразумеваете, что это правильный метод _only_, который является ложным. Объявление переменной вне области функции также привязывает переменную к объекту окна, поэтому это своего рода сокращение. Оба правильные. 'var GLOBAL_VAR =" foo ";' '// тот же, что и' 'window.GLOBAL_VAR =" foo ";' –

0

Одна из главных причин, по которой люди говорили бы вам не использовать глобальные переменные, заключается в том, чтобы не мешать другим сценариям и/или библиотекам.

Соглашение, которое я начал использовать, когда мне нужно использовать глобальную переменную, - это добавить мою фамилию - таким образом, я знаю, что не буду вмешиваться в глобальные переменные любых библиотек или внешних скриптов. (Хотя у меня есть довольно уникальная фамилия - это может не сработать, если вы Смит).

Так что мой глобальные переменный будет названо:

var foo_lastnameGlobal; 
var bar_lastnameGlobal; 

Я должен указать (в случае, если это не ясно) это просто личное соглашение, а не общее или широко используется один.Это также помогает мне помнить, что такое мои глобальные переменные, когда я их использую. Полагаю, это может быть не так хорошо для публичного кода или в профессиональной рабочей среде группы.

Смежные вопросы