«Должны ли они на самом деле просто быть на одной линии?»
Я так не думаю.
Вот как бы я написал это (игнорируя имена):
function something(){
var a,
b,
c = 1,
d,
e;
// Do something
}
Это только выглядит глупо в приведенном выше , потому что 1) имена отстой 2) переменные не присваиваются в «объявлении» - большая часть кода может быть написана с неизменяемыми (назначенными один раз) переменными и Я нахожу это для упрощения кода. Я использую это по нескольким причинам, включая ясность и устойчивость к изменениям форматирования (то есть я могу изменять начальные значения, добавлять / удалять объявления и т. Д., Не разбираясь с форматированием других строк).
«Всегда ли лучше определять каждую переменную сверху?»
Я так не думаю.
Например, вот как я пишу циклы:
for (var i = 0; i < x; i++) {
var elm = elms[i];
...
}
И некоторые люди скажут: «НО ВАР ПОДНИМАЕТСЯ НА ВЕРХНУЮ ФУНКЦИЮ!» или «ПЕРЕМЕННАЯ ФУНКЦИОНАЛЬНАЯ!». Ну, действительно. Однако это позволяет мне визуально видеть, что это ошибка, даже если движок JavaScript не поможет:
for (var i = 0; i < x; i++) {
var elm = elms[i];
...
}
...
// valid JS but since I consider this construct *invalid*
// I know this is a *bug* in my code
alert(elm);
Насколько я назначаю переменным, пойманным в замыканиях: это зависит. Если переменная используется только в одном замыкании, я обычно помещаю ее прямо выше. Это позволяет мне знать, что следует использовать только в этом закрытии . Если переменная является общей (например, self
), я помещаю ее выше всех применимых замыканий - как правило, в «разделе объявления переменной» функции. Это позволяет мне знать, что у него есть «область действия всей функции» (читай: вероятно, будет использоваться в нескольких привязках).
Чтобы решить вопрос «для каждого закрытия» - просто изучите язык. Хранение переменных «объявления» вблизи закрытия не влияет на это в любом случае. Если конструкция не понята, действительно не имеет значения как написан код.
Я использую эти подходы к /, потому что:
- Иметь последовательный, легко сканируемый код.
- Напишите код, который сообщает мне, когда он неправильный .
- Я предпочитаю код, который можно изменять без изменения структуры.
- Самодокументированный код означает меньше комментариев.
- Мне нравится "читать по вертикали"
Удачного кодирования.