Объявление нескольких переменных в JavaScript - PullRequest
303 голосов
/ 29 марта 2009

В JavaScript можно объявить несколько переменных следующим образом:

var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;

... или как это:

var variable1 = "Hello World!",
    variable2 = "Testing...",
    variable3 = 42;

Один метод лучше / быстрее другого?

Ответы [ 17 ]

313 голосов
/ 29 марта 2009

Первый способ проще в обслуживании. Каждое объявление представляет собой отдельный оператор в одной строке, поэтому вы можете легко добавлять, удалять и изменять порядок объявлений.

При втором способе раздражает удаление первого или последнего объявления, поскольку они содержат ключевое слово var и точку с запятой. И каждый раз, когда вы добавляете новое объявление, вам нужно изменить точку с запятой в старой строке на запятую.

202 голосов
/ 12 сентября 2011

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

(function () {
var variable1 = "Hello World!" // semicolon is missed out accidently
var variable2 = "Testing..."; // still a local variable
var variable3 = 42;
}());

Пока второй путь менее прощающий:

(function () {
var variable1 = "Hello World!" // comma is missed out accidently
    variable2 = "Testing...", // becomes a global variable
    variable3 = 42; // a global variable as well
}());
33 голосов
/ 21 ноября 2009

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

25 голосов
/ 04 июня 2012

Это намного удобочитаемее, если вы делаете это следующим образом:

var hey = 23;
var hi = 3;
var howdy 4;

Но занимает меньше места и строк кода следующим образом:

var hey=23,hi=3,howdy=4;

Это может быть идеально для экономии места, но пусть JavaScript-компрессоры справятся с этим за вас.

14 голосов
/ 29 марта 2009

Это просто вопрос личных предпочтений. Нет никакой разницы между этими двумя способами, за исключением нескольких байтов, сохраненных во второй форме, если вы удалите пробел.

12 голосов
/ 19 декабря 2011

Может быть так

var variable1 = "hello world"
, variable2 = 2
, variable3 = "how are you doing"
, variable4 = 42;

За исключением случаев изменения первой или последней переменной, ее легко поддерживать и читать.

11 голосов
/ 21 июля 2016

ECMAScript6 представил деструктурирующее задание , которое работает довольно хорошо:

[a, b] = [1, 2] a будет равно 1, а b будет равно 2.

10 голосов
/ 29 марта 2009
var variable1 = "Hello World!";
var variable2 = "Testing...";
var variable3 = 42;

более читабельно, чем:

var variable1 = "Hello World!",
    variable2 = "Testing...",
    variable3 = 42;

Но они делают то же самое.

7 голосов
/ 08 февраля 2013

Мое единственное, но обязательное использование запятой в цикле for:

for (var i = 0, n = a.length; i < n; i++) {
  var e = a[i];
  console.log(e);
}

Я пошел сюда, чтобы посмотреть, нормально ли это в JavaScript.

Даже видя, что это работает, оставался вопрос, является ли n локальным для функции.

Это подтверждает, что n является локальным:

a=[3,5,7,11];
(function l () { for (var i = 0, n = a.length; i < n; i++) {
  var e = a[i];
  console.log(e);
}}) ();
console.log(typeof n == "undefined" ?
  "as expected, n was local" : "oops, n was global");

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

7 голосов
/ 25 мая 2017

Использовать ES6 Разрушающее присваивание : распаковывает значения из массивов или свойства объектов в отдельные переменные.

let [variable1 , variable2, variable3] = 
["Hello World!", "Testing...", 42];

console.log(variable1); // Hello World!
console.log(variable2); // Testing...
console.log(variable3); // 42
...