Ожидаемый ';' и вместо этого увидел ",". - Множественная настройка JSLint

По состоянию на 14 января 2016 года JSLint начал жаловаться на объявления var или let, которые содержат более одной переменной для каждого объявления, и создали новую директиву multivar, которая игнорирует эту новую "проблему".

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

То есть, на сегодняшний день (18 января 2016 года) этот код теперь разбивается на JSLint:

/*jslint white:true, browser:true, devel:true */
function a(b) {
    "use strict";
    var c, d; // <<< Now bad!!
    d = "test";
    c = d + b;
    console.log(c);
}

Сообщается об ошибке, Expected ';' and instead saw ','. для строки var c,d;

"Правильное" исправление, по-видимому, таково:

/*jslint white:true, browser:true, devel:true */
function a(b) {
    "use strict";
    var c;
    var d;  // <<< this *used* to be forbidden.
    d = "test";
    c = d + b;
    console.log(c);
}

Обратите внимание, что этот новый правильный код привел бы ошибку, Error: combine_var, в более ранних версиях JSLint.

Единственное описание изменения, которое я могу найти в Crockford, похоже, этот пост в Google Plus:

JSLint теперь имеет параметр multivar, допускающий множественные имена, объявляемые в одном выражении var, let или const.

... и краткое упоминание о инструкциях веб-сайта...

Толерантное объявление нескольких переменных для каждого оператора
multivar
true Если оператор var, let или const может объявить две или более переменных в одном утверждении.

Изменение multivar на JSLint.com пока не похоже на репозиторий GitHub. Посмотрите две проверки (1, 2) под названием "var" за 14 января. Эти два делают код в JSLint следующим за новым требованием, но не (afaict) добавляют директиву multivar, описанную и используемую на JSLint.com.

Может ли кто-нибудь сказать мне, почему несколько строк var поощряются/требуются сейчас, кроме обычного, "вы должны игнорировать JSLint", ответы? То есть, , почему перед тем, как нужно было указать один var, я бы предпочел, чтобы поощрить понимание подъема), и почему это рассуждение внезапно вызывается?

Ответ 1

Из руководства по стилю AirBNB.

Легче добавлять новые объявления переменных таким образом, и вам никогда не придется беспокоиться о замене a; для a или введения различий только в пунктуации. Вы также можете выполнить каждое объявление с помощью отладчика, вместо того чтобы перепрыгивать через все сразу.

Подробнее об этом: https://github.com/airbnb/javascript#variables