По состоянию на 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.
... и краткое упоминание о инструкциях веб-сайта...
Толерантное объявление нескольких переменных для каждого оператора
multivartrueЕсли операторvar,letилиconstможет объявить две или более переменных в одном утверждении.
Изменение multivar на JSLint.com пока не похоже на репозиторий GitHub. Посмотрите две проверки (1, 2) под названием "var" за 14 января. Эти два делают код в JSLint следующим за новым требованием, но не (afaict) добавляют директиву multivar, описанную и используемую на JSLint.com.
Может ли кто-нибудь сказать мне, почему несколько строк var поощряются/требуются сейчас, кроме обычного, "вы должны игнорировать JSLint", ответы? То есть, , почему перед тем, как нужно было указать один var, я бы предпочел, чтобы поощрить понимание подъема), и почему это рассуждение внезапно вызывается?