В чем преимущество инициализации нескольких переменных javascript с тем же ключевым словом var?
Когда я читаю javascript-код, который чист и написан людьми, которые, очевидно, очень хороши в этом, я часто вижу этот шаблон
var x = some.initialization.method(),
y = something.els(),
z;
В чем преимущество этого при написании
var x = some.initialization.method();
var y = something.els();
var z;
Второй формат легче поддерживать, поскольку каждая строка существует сама по себе. Таким образом, вы можете стереть строку или добавить строку, а не искать, чтобы увидеть, была ли она инициализирована первая или последняя переменная. Это также означает, что управление версиями diff/mergs будет работать лучше. Учитывая эти недостатки, я предполагаю, что есть преимущество перед первым форматом - но что это? Разумеется, они выполняются одинаково, потому что они одинаковы с парсером.
Ответы
Ответ 1
Есть небольшое преимущество в размере javascript, который отправляется в браузер; Google Closure компилятор в режиме "только для пробелов" скомпилирует одну версию var:
var x=some.initialization.method(),y=something.els(),z;
а multi - как:
var x=some.initialization.method();var y=something.els();var z;
Я изменил ваш else
на els
так, чтобы он компилировался.
Это не массовый выигрыш (особенно если вы также сжимаете файлы), и "простой" режим компиляции сделает это для вас в любом случае, поэтому я, вероятно, не буду слишком беспокоиться об этом, если вы не найдете более веские причины.
Одна из причин, по которой вы, возможно, не захотите это сделать, - это то, что если вы случайно используете точку с запятой вместо запятой, вы только что обнаружили глобальную.
Ответ 2
Я не могу выдержать все переменные в одном из операторов, потому что объявление переменной может быть очень далеким от того, где оно фактически используется. Я знаю все аргументы для него, и эта переменная hoisting все равно перемещает все vars на вершину функции. Но когда я вижу переменную, объявленную в верхней части функции, и она не привыкает к другим 20 строкам, это приводит меня в замешательство, особенно для индексных переменных цикла
Ответ 3
Использование одного оператора var в верхней части ваших функций - это полезный шаблон для принятия. Он имеет следующие преимущества:
-
Предоставляет одно место для поиска всех локальных переменных, необходимых функции
-
Предотвращает логические ошибки, когда переменная используется до ее определения
-
Помогает вам забыть объявить переменные и, следовательно, свести к минимуму глобальные значения
-
меньше кода (для ввода и передачи по проводу:)
-
JSLint нравится этот шаблон
Единый шаблон var выглядит следующим образом:
function func() {
var a = 1,
b = 2,
sum = a + b,
myobject = {},
i,
j;
// function body...
}
Для получения дополнительной информации смотрите там
Главное преимущество заключается в том, что у вас будут все переменные, определенные в самом начале вашей функции, поэтому вы не получите много глобальных переменных из переменных, объявленных без var, и ваш код не будет падать, потому что неуместной инструкции var (вызывающая переменная перед ее объявлением)
Ответ 4
Единственное реальное преимущество заключается в том, что он сохраняет пару байтов на переменную, которые в большом JS файле могут складываться; помните, что файлы JS часто отправляются по кабелю.
Лично я предпочитаю одиночный var
в строке.
Ответ 5
Помимо размера проводной линии, это, вероятно, также помогает в производительности интерпретатора. Из Профессиональная Java Script для веб-разработчиков:
Один оператор может выполнять несколько операций быстрее, чем несколько операторов, выполняющих одну операцию. Тогда задача состоит в том, чтобы искать инструкции, которые можно объединить, чтобы уменьшить время выполнения всего script.
Далее было предложено объявить переменные в одной строке.